И снова здравствуйте! Для тех, кто путешествовал со мной до сих пор, ваша выносливость достойна восхищения! Мы поймали быстрые мячи нейронных сетей с прямой связью и разгадали загадки сверточных нейронных сетей.
Если вы новичок, добро пожаловать! Мы на пути к интуитивному пониманию различных типов искусственных нейронных сетей. Если вы еще не ознакомились с моими предыдущими постами об основах нейронных сетей (Часть 1 и Часть 2), Введение в нейронные сети с прямой связью и Введение в сверточные нейронные сети, рекомендую рубрику там первый.
Пойдем?
Рекуррентные нейронные сети (RNN):
Вы помните свой первый год в колледже? Если вы сейчас первокурсник, остерегайтесь этого ледокола! Наш советник по общежитию подверг всех на нашем этаже ужасному ледоколу. Мы сели в круг, и каждый должен был представиться, но с изюминкой: каждый человек также должен был повторно представить каждого, кто был до него. Итак, первый счастливчик представился с легкостью, второй человек представил человека 1 и себя, третий человек представил людей 2, 1 и себя, и так далее. Пытаться запомнить имена всех этих людей, особенно имена, которых я раньше не слышал, было совсем не весело. Я бесстыдно пытался поменяться местами, чтобы оказаться в очереди раньше, и мне приходилось запоминать меньше имен. Но, конечно, у всех остальных была такая же идея!
Точно так же, как этот вызывающий беспокойство ледокол, рекуррентные нейронные сети (RNN) передают информацию от одного шага к другому. Но есть ключевое отличие: RNN обладают идеальной «памятью» и не беспокоятся о том, чтобы обидеть новых знакомых, забыв их имена. Они запоминают входные данные, которые они обрабатывают, и используют эту память, чтобы осмыслить новые входные данные. Это делает их превосходными в задачах, связанных с последовательностями, где важен порядок (например, данные временных рядов, геномы, текст, речь, музыка).
Память RNN возможна, потому что, в отличие от нейронной сети с прямой связью, где информация течет только в прямом направлении, в RNN информация может проходить по сети в цикле. Как и любая другая нейронная сеть, RNN получают данные во входном слое, но не всю последовательность сразу. В примере с ледоколом, когда первый человек, скажем, я, говорит: «Меня зовут Шализ Айромлоо» (возможно, я никогда не ходил первым в ледоколе, но я веду этот блог, поэтому я должен установить сцену !), предложение не вводится сразу. Вместо этого слова «мой», «имя», «есть» и т. д. обрабатываются последовательно.
Каждое слово обрабатывается и передается скрытому слою. Здесь в игру вступает «петлевая» часть RNN. В отличие от других рассмотренных нами нейронных сетей, где нейроны скрытого слоя связаны только с нейронами предыдущего и последующего слоев, в RNN каждый нейрон скрытого слоя также связан сам с собой.
Когда сеть обрабатывает первый ввод, она генерирует скрытое состояние на скрытом слое на основе этого ввода. Когда он переходит к следующему вводу, он не просто использует этот следующий ввод. Он также использует скрытое состояние из предыдущего ввода.
Скрытое состояние похоже на память нейрона. Он запоминает, что произошло с предыдущим вводом. Эта память обновляется каждый раз, когда поступает новый ввод.
Итак, когда второй человек в нашем ледоколе представляется и говорит: «Меня зовут Джон Доу», сеть не просто обрабатывает эту информацию самостоятельно, но и учитывает информацию, хранящуюся в скрытом состоянии, т.е. воспоминание о первом знакомстве. Таким образом, сеть «запоминает» представление первого человека при обработке представления второго человека.
Когда второй человек повторяет имя первого («Ее зовут Шализ Айромлоо»), это часть нового обрабатываемого ввода, но сеть также использует свою «память» (информацию в скрытом состоянии), чтобы понять это. новый ввод в контексте предыдущего ввода.
Наконец, на основе информации, обработанной в скрытых слоях, выходной слой генерирует конечный результат. Стоит упомянуть, что память RNN не так совершенна, как мне показалось, и RNN действительно борются с длинными последовательностями данных. Мелко ли находить в этом удовлетворение?