Винаги съм мразил часовете по френски. Учителите ми биха казали неща като avez-vous fait le week-end?

Тогава ще трябва да го преведа наум на английски, какво правихте през уикенда?

Да не говорим, че помислете за отговор, Гледах филм и го преведете на френски, преди най-накрая да го кажете, je considere un film.

Това е просто дълъг и откровено досаден умствен процес, през който трябва да преминете, особено що се отнася до писане и граматика. Така че като всеки друг гимназист използвах Google Преводач много.

И всички знаем какво мислеха нашите учители за Google Преводач, „не го използвайте, не е надежден и не работи правилно“

Независимо от това, всички ние вероятно разчитахме на това нещо за всяка задача в последната минута, която сме изпълнявали.

Един ден обаче трябваше да пиша есе в клас и не ми беше позволено да използвам онлайн речници или Google Translate. Докато се борех дълбоко, осъзнах, какво ще стане, ако имитирам структурата зад Google Translate и създам своя собствена версия? Тогава технически трябва да е моя собствена работа?

Очевидно това беше, че просто бях отчаян, тъй като наборът от данни на Google е доста сложен за използване, но успях да репликирам модела, който Google използва. Това е модел на последователност към последователност, известен още като модел на енкодер-декодер.

Той използва две повтарящи се невронни мрежи, за да вземе основно данните, да ги кодира в цифрово представяне, след което във втория RNN да ги декодира на другия език.

Индекс

  1. Какво е модел енкодер-декодер?
  2. Създаване на входния слой
  3. Енкодерът
  4. Механизъм за внимание и декодер
  5. Изход
  6. Видео урок
  7. Преглед

Какво е модел енкодер-декодер?

Диаграмата по-долу е на модел Encoder-Decoder (знам, изглежда супер сложно, но ще го разделя на части!). Както можете да видите, има два различни раздела, кодерът и декодерът. Кодерът превръща входната последователност във вектор, след което преминава през декодера, който превръща вектора в нова последователност. Това са и двете повтарящи се невронни мрежи.

Какво е RNN?

Повтарящите се невронни мрежи или RNN наистина са вид изкуствена невронна мрежа. Те използват уникалната си способност да „запомнят“ информация, за да предскажат последователностите на изхода въз основа на последователността на входа. Например, можете да обучите RNN да напише история или да отговори на гласа ви, използвайки подходящи фрази.

RNN предотвратява изходи като как върви?, когато трябва да бъде как върви? Колкото и някои от нас да обичат да говорят като Йода, цялата тази тенденция официално премина.

Ще го използваме, за да вземем френски и да го превърнем в английски!

Създаване на входове

Това изображение по-долу е входният слой. Входящите данни (x¹,x², …) са фрази или думи от набора от данни, въпреки че трябва да бъдат представени числено, тъй като компютрите не разбират думите.

За да направим това, можем да начертаем английските думи и френските думи според приликите и да използваме техните координати за въвеждане във вектора.

Векторът в крайна сметка изглежда така:

Друг начин, който се използва по-широко, е да се създаде one-hot encoding, което дава на думите двоично представяне. Всяка дума има индексен номер в код, попълнен с 0 и 1, например котка = ‹00000001000› или орангутан = ‹01000000›

Този процес ще се случи с всички френски думи, преди да влязат в Encoder.

Енкодерът

Едно от най-досадните неща при моделите RNN са всички стрелки и това е така, защото информацията буквално отива навсякъде. Това се дължи на важността на връзката между думите в изреченията.

Първият слой взема входните вектори и ги обработва. Това продължава да се предава на клетката в следващите слоеве. Докато обработва обаче, той събира важна информация, която иска машината да запомни, и я поставя в скрито състояние.

Това скрито състояние действа като памет за RNN, то следи информацията, която се предава в първата колона от клетки, и я предава на втората колона.

В крайна сметка LSTM сортират векторите и запазват съответната информация. Неща като „je“ идват преди „suis“, докато отнемат информация като „ne pas“ преди „chat“

Отблизо този процес е по-долу:

Входът влиза и се намалява с функцията tanh, за която ще говоря повече след това, след което входният вектор се предава на горната клетка, докато скритото състояние отива на клетката до нея.

Скритото състояние се създава чрез комбиниране на входния вектор със скритото състояние на предишната клетка. Този процес продължава в целия ред.

LSTMs

LSTM върши много подобна работа като слоевете в RNN. Преминава през информация и я изпраща напред. Въпреки че предприетите стъпки за това в LSTM са много различни от тези в слоевете RNN. В нашата диаграма секцията LSTMs е представена като лента.

Тази лента всъщност е съставена от различни LSTM клетки, както е показано по-долу.

Има няколко диференциални уравнения и символи, които ще обясня.

  1. ht -1 се отнася до предишната клетка (тази отляво) и скритото състояние, идващо от тази клетка. Можете да видите, че имаме ht от другата страна на тази клетка и отгоре, което е скритото състояние, което даваме на следващите клетки.
  2. Това се отнася и за ct-1, което се отнася до състоянието на клетката, изходния вектор на предишната клетка, което понякога може да бъде подобно или същото като скритото състояние.
  3. Малкият символ, t, се отнася до номера на клетката. Ако това е втората клетка в LSTM енкодера, всички t ще бъдат равни.

Функция Tanh и сигмоидна функция

Някаква функция за активиране е доста често срещана в повечето невронни мрежи. Също така е в нашата LSTM клетка, функцията Tanh е тази, обозначена като tanh, а сигмоидната функция е символът на кръг с линия.

Много пъти, когато всичките числа се предават наоколо и кратни, числата могат да станат огромни. Ето защо трябва да ги намалим всички. ФункциятаTanh мащабира всички числа до стойност между -1 и 1

Докато функцията Sigmoid ги мащабира до между 0 и 1. Това се използва за елиминиране на определени стойности в вратите. Ако стойността е по-близо до 0, след като е множествена, тази част от данните не е достатъчно ценна, за да се запази, ако е над 0, това е така.

Порти

Всяка от тези функции за активиране също действа като порта, която решава коя информация е уместна и коя не.

Forget Gate (ft) – Вход (скрито състояние + входен вектор) преминава през сигмоидната функция. Тази порта определя уместността на информацията от предишните стъпки.

Входна врата (it, Ct)- Входът преминава през сигмоидната функция (it) и функцията tanh (Ct), след което те се умножават един от друг. Входната врата избира информацията, която е важна за добавяне от текущата стъпка.

Output Gate(ct, ot)- Намира изхода на новата клетка чрез умножаване на изхода на старата клетка (ct-1) по ft, след което добавя то към то, умножено поct.

Следващата част от изходния гейт намира следващото скрито състояние чрез прилагане на сигмоидната функция върху входа и умножаването му по новия ct, който беше поставен през функцията tanh преди.

Всички тези стъпки се случват в една LSTM клетка и се повтарят във всички клетки. Крайният изход на енкодера е изходът на LSTM енкодера. Резултатът ще бъде скритото състояние, което включва информация от целия ред от LSTM клетки, така че всички важни взаимоотношения между френски и английски думи. Наричаме това вектор на контекста.

Този контекстен вектор преминава през механизма на вниманието и декодера.

Механизъм за внимание и декодер

Преди да разберем какво прави механизмът на вниманието, трябва да разберем декодера.

Декодерът декодира английския превод въз основа на контекстните вектори, както се вижда по-долу.

В тази снимка са използвани немски думи, но можете да си ги представите като френски думи. Всеки от тези входове се подава към енкодера и декодерът приема крайното скрито състояние, известно още като контекстния вектор, за да предвиди транслацията.

Този вектор трябва да има пълната връзка и значение на френския текст. Това се нарича вграждане на изречения, подобно на вграждането на думи, което направихме, когато създадохме входния вектор.

Ако вземете вектора на контекста, бихте забелязали семантично (което означава свързано със значението в езика или логиката), че подобни думи са по-близо една до друга.

Представете си, ако ви кажа, „Днес отидох в къщата на баба ми и при тонове шоколадови бисквитки, беше невероятно и утре ще отида отново“

Всъщност не оценявате всяка дума по ред, дори докато я четете. Можете да изберете първо да се съсредоточите върху „Днес“, след това върху „Баба“ и т.н. Това е, което искаме да направи нашият декодер, да вземе френския текст и да разбере различните части поотделно.

Това, което нашият декодер прави в момента, е, че претърсва целия вектор на контекста, за да намери първата дума, „Днес“, след което да види как се свързва с „Аз“ и така нататък. Това може да е лесно за изключително малки набори от данни, но не и ако имате изречение, което може да е дълго 25 думи.

Механизмът за внимание добавя невронна мрежа между енкодера и декодера, която позволява на декодера да използва фокус върху съответните части на изречението, когато предвижда превода, което е това, което искахме.

Визуалното представяне на това, което невронната мрежа намира, изглежда така:

Връщайки се към това как изглежда всичко това в нашия модел, английският текст се въвежда в първия слой. Това също се изпраща към механизма за внимание.

Механизмът за внимание взема контекстния вектор от енкодера и входа за декодера и създава невронна мрежа. Информацията от тази невронна мрежа се изпраща обратно към декодера, за да му помогне да намери превода.

Последният проблем за решаване е просто извеждането на правилния превод. Тук можем да видим, че всяка дума е свързана една с друга, правилният превод е думата, с която тя корелира най-много.

Ето защо прилагаме функцията softmax, която често се използва с невронни мрежи. Функцията softmax взема вероятностите за превод на всяка дума и избира тази с най-голяма вероятност за извеждане. В нашето изображение по-горе виждаме, че това е представено от удебелените линии.

input = elle a cinq ans de moins que moi .
output = she s five years years than me . . <EOS>
input = elle est trop petit .
output = she s too polite . <EOS>
input = je ne crains pas de mourir .
output = i m not scared of dying . <EOS>
input = c est un jeune directeur plein de talent .
output = he s a talented young director . <EOS>

преглед:

  1. Моделът енкодер-декодер използва две RNN за превод на езици
  2. Входовете се превръщат в едно-горещи вектори
  3. Единият горещ вектор преминава през енкодера, където неуместната информация се премахва чрез слоеве и LSTM
  4. Гейтовете и функциите за активиране се използват за намиране на уместна и неуместна информация в енкодера
  5. Контекстният вектор (изход на енкодера) влиза в механизма за внимание, където преминава през невронна мрежа, за да намери връзки между входа и изхода.
  6. Той също така се дублира като входен слой за декодера
  7. Декодерът преминава през същия процес като енкодера
  8. Изходът на декодерите се прекарва през softmax, за да се намерят предвидените преводи

Чувствайте се свободни да се свържете с Linkedin, както и да ме следвате, за да сте в крак с моите проекти! Разгледайте и другите ми статии и поздравете!

https://www.linkedin.com/in/laiba-khan-1ba655171/