กลไกความสนใจคืออะไรกันแน่?


23

มีการใช้กลไกการเรียนรู้ในเอกสารการเรียนรู้ลึกต่างๆในช่วงไม่กี่ปีที่ผ่านมา Ilya Sutskever หัวหน้าฝ่ายวิจัยของ Open AI ได้ชื่นชมพวกเขาอย่างกระตือรือร้น: https://towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0

Eugenio Culurciello ที่ Purdue University ได้อ้างว่า RNNs และ LSTMs ควรถูกทอดทิ้งเนื่องจากเป็นเครือข่ายประสาทที่เน้นความสนใจอย่างหมดจด:

https://towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0

ดูเหมือนว่าจะเป็นการพูดเกินจริง แต่ก็ปฏิเสธไม่ได้ว่าแบบจำลองความสนใจล้วนๆทำหน้าที่ในการสร้างแบบจำลองได้ค่อนข้างดี: เราทุกคนรู้เกี่ยวกับกระดาษที่มีชื่อเหมาะสมจาก Google ความสนใจคือสิ่งที่คุณต้องการ

แต่สิ่งที่ว่ามีรูปแบบความสนใจตาม? ฉันยังไม่พบคำอธิบายที่ชัดเจนของโมเดลดังกล่าว สมมติว่าฉันต้องการคาดการณ์ค่าใหม่ของอนุกรมเวลาหลายตัวแปรตามค่าที่ผ่านมา มันค่อนข้างชัดเจนว่าจะทำอย่างไรกับ RNN ที่มีเซลล์ LSTM ฉันจะทำเช่นเดียวกันกับแบบจำลองตามความสนใจได้อย่างไร

คำตอบ:


20

เรียนเป็นวิธีการรวมชุดของเวกเตอร์ที่เข้าเพียงหนึ่งเวกเตอร์มักจะผ่านการค้นหาเวกเตอร์ยูโดยปกติแล้วเป็นอินพุตสำหรับโมเดลหรือสถานะที่ซ่อนของขั้นตอนเวลาก่อนหน้าหรือสถานะที่ซ่อนอยู่ลดลงหนึ่งระดับ (ในกรณีของ LSTM แบบสแต็ก)viuvi

ผลลัพธ์มักถูกเรียกว่าบริบทเวกเตอร์cเนื่องจากมีบริบทที่เกี่ยวข้องกับขั้นตอนเวลาปัจจุบัน

บริบทเพิ่มเติมเวกเตอร์cนี้จะถูกป้อนเข้าสู่ RNN / LSTM เช่นกัน (สามารถต่อกับอินพุตดั้งเดิมได้) ดังนั้นบริบทสามารถใช้เพื่อช่วยในการทำนาย

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการคำนวณความน่าจะเป็นเวกเตอร์p=softmax(VTu)และc=ipiviที่Vคือกำหนดการทั้งหมดก่อนหน้านี้viฉัน ค้นหาแบบทั่วไปเวกเตอร์uปัจจุบันรัฐซ่อนชั่วโมงเสื้อที

มีหลายรูปแบบเกี่ยวกับเรื่องนี้และคุณสามารถทำสิ่งต่าง ๆ ที่ซับซ้อนตามที่คุณต้องการ ตัวอย่างเช่นแทนที่จะใช้viTuเป็นบันทึกหนึ่งอาจเลือกf(vi,u)แทนโดยที่fเป็นเครือข่ายประสาทเทียมโดยพลการ

กลไกความสนใจทั่วไปสำหรับตัวแบบลำดับต่อลำดับใช้p=softmax(qTtanh(W1vi+W2ht))โดยที่vคือสถานะที่ซ่อนของตัวเข้ารหัสและhtคือสถานะที่ซ่อนอยู่ในปัจจุบัน ของตัวถอดรหัส qและทั้งสองWเป็นพารามิเตอร์

เอกสารบางฉบับที่แสดงให้เห็นถึงความแตกต่างของแนวคิดความสนใจ:

เครือข่ายตัวชี้ใช้ความสนใจในการอ้างอิงอินพุตเพื่อแก้ไขปัญหาการเพิ่มประสิทธิภาพ combinatorial

เครือข่ายหน่วยงานที่เกิดขึ้นประจำรักษาสถานะหน่วยความจำแยกต่างหากสำหรับเอนทิตีที่แตกต่างกัน (คน / วัตถุ) ในขณะที่อ่านข้อความและอัพเดตสถานะหน่วยความจำที่ถูกต้องโดยใช้ความสนใจ

หม้อแปลงไฟฟ้ารุ่นนี้ยังให้ความสนใจอย่างกว้างขวาง สูตรของพวกเขาให้ความสนใจเล็กน้อยทั่วไปมากขึ้นและยังเกี่ยวข้องกับพาหะที่สำคัญki : ความสนใจน้ำหนักpจะคำนวณจริงระหว่างคีย์และการค้นหาและบริบทที่สร้างขึ้นแล้วกับviฉัน


นี่คือการดำเนินการอย่างรวดเร็วของรูปแบบหนึ่งของความสนใจแม้ว่าฉันไม่สามารถรับประกันความถูกต้องนอกเหนือจากความจริงที่ว่ามันผ่านการทดสอบง่ายๆ

RNN พื้นฐาน:

def rnn(inputs_split):
    bias = tf.get_variable('bias', shape = [hidden_dim, 1])
    weight_hidden = tf.tile(tf.get_variable('hidden', shape = [1, hidden_dim, hidden_dim]), [batch, 1, 1])
    weight_input = tf.tile(tf.get_variable('input', shape = [1, hidden_dim, in_dim]), [batch, 1, 1])

    hidden_states = [tf.zeros((batch, hidden_dim, 1), tf.float32)]
    for i, input in enumerate(inputs_split):
        input = tf.reshape(input, (batch, in_dim, 1))
        last_state = hidden_states[-1]
        hidden = tf.nn.tanh( tf.matmul(weight_input, input) + tf.matmul(weight_hidden, last_state) + bias )
        hidden_states.append(hidden)
    return hidden_states[-1]

เราเพิ่มเพียงไม่กี่บรรทัดก่อนที่จะคำนวณสถานะที่ซ่อนใหม่:

        if len(hidden_states) > 1:
            logits = tf.transpose(tf.reduce_mean(last_state * hidden_states[:-1], axis = [2, 3]))
            probs = tf.nn.softmax(logits)
            probs = tf.reshape(probs, (batch, -1, 1, 1))
            context = tf.add_n([v * prob for (v, prob) in zip(hidden_states[:-1], tf.unstack(probs, axis = 1))])
        else:
            context = tf.zeros_like(last_state)

        last_state = tf.concat([last_state, context], axis = 1)

        hidden = tf.nn.tanh( tf.matmul(weight_input, input) + tf.matmul(weight_hidden, last_state) + bias )

รหัสเต็ม


p=softmax(VTu)ic=ipivipiVTvVTv

1
zi=viTup=softmax(z)pi=eizjejz

ppi

1
ใช่นั่นคือสิ่งที่ฉันหมายถึง
shimao

@shimao ฉันสร้างห้องแชทแจ้งให้เราทราบหากคุณสนใจที่จะพูดคุย (ไม่เกี่ยวกับคำถามนี้)
DeltaIV
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.