Яка різниця між CONCAT та SUM у двонаправленому LSTM?


Відповідь 1:

Я розгляну це в загальному випадку двонаправленої RNN. Все це стосується RNN, LSTM, GRU або будь-якої іншої клітини, яку ви використовуєте.

Двонаправлені RNN

RNN має для кожного входу

ii

, внутрішній стан

hih_i

це залежить від входу

xix_i

і попередній крок

hi1h_{i-1}

тобто

hi=f(hi1,xi)h_i = f(h_{i-1}, x_i)

,withfbeingtheRNNfunction,aka.RNNcellwhichmaybeassimpleasa[math]tanh[/math]function(vanillaRNN)ormorecomplex(LSTM,GRU)., with f being the RNN function, aka. RNN cell which may be as simple as a [math]tanh[/math] function (vanilla RNN) or more complex (LSTM, GRU).

У двонаправленій RNN ми також вважаємо RNN, де входи подаються в протилежному порядку, від

xnx_n

до

x1x_1

, тобто:

hi=g(hi+1,xi)h_i = g(h_{i+1}, x_i)

Для наочності позначаємо ці стани

h\overrightarrow{h}

і

h\overleftarrow{h}

відповідно для прямого (тобто "нормального") RNN та назад.

Ідея, що стоїть за двонаправленою RNN, полягає в заході інформації про навколишні входи. Пам'ятайте, що стан RNN якось підсумовує вхідні дані. Тому прямий RNN для даного i містить інформацію про попередні введення, тобто

xjx_j

як от

j<i j < i

; відсталий RNN містить інформацію про наступні входи, тобто

xkx_k

як от

k>i.k > i.

Поєднання вперед та назад держав

Тому має сенс використовувати як прямий, так і зворотний стан, щоб точно описати вхід. Іншим словом, ми хочемо, щоб наш остаточний стан був функцією двох станів, тобто:

hi=q(hi,hi)h_i = q(\overrightarrow{h_i} , \overleftarrow{h_i})

Те, що ми зазвичай називаємо «конкатом» і «сумою» в контексті двонаправленої RNN, саме ця функція

qq

тобто як поєднувати стан вперед та назад.

Concat означає, що "нашим остаточним станом буде об'єднання передових і зворотних держав", тобто

hi=[hi;hi]h_i = \left[{\overrightarrow{h_i}}^\top; {\overleftarrow{h_i}}^\top \right]^\top

(ви можете ігнорувати транспозицію. Це просто написати вектори стовпців у рядку). У цьому випадку ми використовуємо обидва стани без втрати інформації, розмір остаточного стану, тоді розмір Foward плюс розмір відсталого.

Операція за сумою означає «наш остаточний стан буде сумою прямого і зворотного станів», тобто

hi=hi+hih_i = \overrightarrow{h_i} + \overleftarrow{h_i}

Це не збільшує розмірність, але може вважатися втратою з точки зору інформації.

Обговорення

У більшості мовних ситуацій, над якими я працював, я в основному бачив конкатенацію, яка є більш інформативною. Це дозволяє моделювати, щоб дізнатись, де взяти інформацію.

Сподіваюся, що це допомагає, не соромтесь коментувати інакше.