Что такое искусственные нейронные сети?

Многие достижения в искусственном интеллекте – это новые статистические модели, но подавляющее большинство достижений происходит в технологии, называемой искусственными нейронными сетями (ИНС). Если вы читали что-нибудь о них раньше, то вы читали, что эти ИНС являются действительно приблизительной моделью того, как устроен человеческий мозг. Обратите внимание, что есть разница между искусственными нейронными сетями и нейронными сетями. Хотя большинство людей бросают синтетические ради краткости, слово artificial было придумано для того, чтобы люди в вычислительной нейробиологии все еще могли использовать термин нейронная сеть, чтобы спрашивать о своей работе. Ниже может быть диаграмма фактических нейронов и синапсов внутри мозга по сравнению с искусственными.

Не бойтесь, если диаграмма не кажется вам очень четкой. Для вас важно знать, что в наших ИНС мы имеем эти единицы вычисления, называемые нейронами. Эти искусственные нейроны соединены синапсами, которые на самом деле являются просто взвешенными значениями. Это говорит о том, что при заданном многообразии, нейрон будет выполнять какое-то вычисление (например, сигмоидальную функцию), затем результаты этого вычисления будут умножаться на вес, потому что он “путешествует”. Взвешенным результатом иногда может быть выход вашей нейросети, или, как я скоро упомяну, у вас будет больше нейронов, настроенных в слоях, что является основной концепцией мысли, которую мы называем глубоким обучением.

Откуда они доступны?

https://miro.medium.com/max/362/1*iKcFg_tho1ByDfQjF9hXPg.jpeg

Искусственные нейронные сети не являются концепцией замены. На самом деле, мы даже не всегда называли их нейронными сетями, и они, конечно, не выглядят эквивалентными сейчас, как это было при их создании. В 1960-х годах у нас было то, что называлось перцептроном. Перцептроны были сделаны из нейронов МакКаллох-Питтс. У нас даже были предвзятые перцептроны, и в конце концов люди начали создавать многослойные перцептроны, что является синонимом общей искусственной нейронной сети, о которой мы слышим сейчас.

Но подождите, если у нас нейронные сети с 1960-х годов, почему они только сейчас становятся огромными? Это длинная история, и я призываю вас сконцентрироваться на настоящем подкастном эпизоде, чтобы “отцы” недавних ИНС упомянули свою точку зрения на предмет. Чтобы быстро подвести итог, есть рука, наполненная факторами, которые удерживали ИНН от того, чтобы стать более популярными. У нас не было вычислительной мощности ПК, и у нас не было информации, чтобы их тренировать. Использование их было хмурым, благодаря тому, что они обладали, казалось бы, произвольной способностью хорошо работать. Все эти факторы меняются. Наши компьютеры становятся быстрее и мощнее, а вместе с Интернетом у нас есть все виды знаний, которыми мы можем поделиться для использования.

Как они работают?

Видите ли, я обсуждал выше, что нейроны и синапсы выполняют вычисления. Вопрос в вашем сознании должен быть: “Как они учатся выполнять какие вычисления?” Я был прав? Решение заключается в том, что мы хотели бы задать им большое количество вопросов и предоставить им ответы. Это часто называется обучением под наблюдением. При наличии достаточного количества пар вопрос-ответ, вычисления и значения, хранящиеся у каждого нейрона и синапса, медленно корректируются. Обычно это часто происходит в процессе, называемом обратным размножением

https://miro.medium.com/max/337/1*uIVBAMYTtX-3nU14_jhTSA.jpeg

Представь, что ты идешь по тротуару и видишь фонарный столб. Вы никогда раньше не видели фонарного столба, поэтому вы заходите прямо в него и говорите “ай”. Затем, когда вы видите фонарный столб, вы забираетесь на пару дюймов в сторону и продолжаете идти. В этой точке ваше плечо попадает в светильник, и вы снова говорите “ай”. В третий раз, когда вы видите фонарный столб, вы прогрессируете везде, чтобы убедиться, что вы не попали в фонарный столб. За исключением того, что теперь произошло что-то ужасное – теперь вы вошли прямо в след почтового ящика, и вы никогда не видели почтового ящика раньше. Вы вошли в него, и поэтому весь процесс повторяется. Очевидно, что это часто является чрезмерным упрощением, но это эффективно то, что делает backpropogation. Человеческая нейронная сеть получает беспорядок примеров, а затем пытается призвать к эквивалентному ответу, потому что пример приведен. Когда он ошибается, вычисляется ошибка, и поэтому значения на каждом нейроне и синапсе распространяются обратно через ИНС на последующее время. Этот процесс берет массу примеров. Для мировых приложений количество примеров часто находится в пределах миллионов.

Теперь, когда мы имеем представление об искусственных нейронных сетях и в некоторой степени понимаем, как они работают, возникает еще один вопрос, который должен прийти вам в голову. Как мы можем научиться работать с большим количеством нейронов, которые мы хотели бы использовать? И зачем вы ранее выделили слои слов? Слои – это просто наборы нейронов. У нас есть входной слой, то есть данные, которые мы предлагаем ИНС. У нас есть скрытые слои, в которых происходит волшебство. Наконец, у нас есть выходной слой, на котором размещены законченные вычисления сети, которые мы можем использовать.

https://miro.medium.com/max/300/1*f0hA2R652htmc1EaDrgG8g.png

Сами слои – это просто наборы нейронов. В молодости многослойных перцептронов мы изначально считали, что достаточно иметь только один входной слой, один скрытый слой и один выходной слой. Это разумно, не так ли? Если дать несколько чисел, то нужен только один набор вычислений, и тогда вы получите выход. Если ваше ANN не вычисляло правильное значение, вы только добавили больше нейронов к единственному скрытому слою. В конце концов, мы узнали, что при этом мы действительно просто создавали линейное отображение от каждого входа к выходу. Другими словами, мы узнали, что конкретный вход всегда будет сопоставляться с конкретным выходом. У нас не было гибкости, и мы действительно могли обрабатывать только те входы, которые мы видели раньше. Это было не то, что мы хотели.

Теперь введите глубокое обучение, которое когда-то у нас был один скрытый слой. Это часто является одним из объяснений того, что у нас есть лучшие ANN сейчас, потому что мы хотели бы много узлов с десятками, если меньше слоев. Это приводит к огромному количеству переменных, которые мы хотели бы отслеживать одновременно. Достижения в параллельном программировании также позволяют запускать еще большие ANN партиями. Наши искусственные нейронные сети сейчас становятся настолько большими, что мы не будем запускать ни одной эпохи, то есть итерации по всей сети, сразу. Мы хотели бы попробовать все в партиях, которые являются лишь подмножествами всей сети, и как только мы завершаем целую эпоху, мы применяем обратное распространение.

Какие есть виды?

Наряду с глубоким изучением сейчас важно понимать, что существует беспорядок в различных архитектурах искусственных нейронных сетей. Стандартная ИНС настраивается таким образом, что каждый нейрон соединяется друг с другом в пределах следующего слоя. Они специально называются искусственными нейронными сетями прямого доступа (хотя ANN, как правило, все нейроны прямого доступа). Мы узнали, что, соединяя нейроны с другими нейронами в определенных паттернах, мы получим еще лучшие провода к определенным сценариям.

Повторяющиеся нейронные сети

Повторяющиеся нейронные сети (RNN) были созданы для того, чтобы справиться с недостатком искусственных нейронных сетей, которые не принимали решений, поддерживаемых предыдущими знаниями. Типичная нейронная сеть научилась формировать решения, поддерживающие контекст в обучении, но как только она принимала решения для использования, выбор делался независимо друг от друга

https://miro.medium.com/max/504/1*nPz3TnsVZvFdgG8LQ8cwuA.png

Когда бы мы хотели что-нибудь подобное? Ну, поверь, играть в блэкджек. Если у вас есть 4 и 5 для начала, вы узнаете, что 2 низкие карты вне колоды. Такая информация может помочь вам определить, стоит ли вам бить или нет. RNN очень полезны при обработке языка, так как предыдущие слова или персонажи полезны для понимания контекста другого слова. Существует множество различных реализаций, но намерения обычно эквивалентны . Мы хотели бы сохранить информацию. Мы добьемся этого с помощью двунаправленных RNN, или же мы реализуем повторяющийся скрытый слой, который изменяется с каждым фидом. Если вы хотите узнать больше о RNN, ознакомьтесь либо с этим руководством, где вы реализуете RNN на Python, либо с постом в блоге, где более подробно описано использование RNN.

Упоминание относится к Сетям Памяти. Концепция заключается в том, что мы хотели бы сохранить больше информации, чем то, что хранят RNN или LSTM, если мы хотим знать что-то вроде фильма или книги, где могут происходить тонны событий, которые располагают друг к другу .

Сэм заходит на кухню.

Сэм берет яблоко.

Сэм входит в спальню.

Сэм роняет яблоко.

В: Где это яблоко?

О: Спальня

Образец, взятый из этой бумаги.

Конволюционные нейронные сети

Конволюционные нейронные сети (CNN), иногда называемые LeNets (по имени Яна ЛеКуна), являются искусственными нейронными сетями, в которых связи между слоями кажутся несколько произвольными. Однако, основанием для установки синапсов так, как они есть, является помощь в уменьшении количества параметров, которые требуют оптимизации. Часто это делается путем указания определенной симметрии в том, как соединяются нейроны, тогда вы, по сути, “повторно используете” нейроны для того, чтобы иметь идентичные копии без необходимости использования эквивалентного количества синапсов. CNN часто используются при работе с изображениями из-за их способности распознавать паттерны в окружающих пикселях. При проверке каждого отдельного пикселя по сравнению с окружающими его пикселями содержится избыточная информация, и вы фактически будете сжимать некоторое количество этой информации из-за их симметричных свойств. Похоже на то, что ситуация для CNN будет правильной, если вы будете спрашивать у меня. У Кристофера Ола (Christopher Olah) есть отличный пост в блоге о понимании CNN также как и других видов АНН, которые вы найдете здесь. Еще одним отличным ресурсом для понимания CNN является этот пост в блоге.

Усиление обучения

Последний тип ИНН, о котором я хочу упомянуть, это тип под названием “Обучение в целях усиления”. Усиленное обучение может быть общим термином, используемым для обозначения поведения, демонстрируемого компьютерами при попытке максимизировать конкретную награду, что предполагает, что само по себе оно не является техногенной нейронной спецификацией. Тем не менее, вы будете применять обучение по усилению или генетические алгоритмы для создания антропогенной нейронной спецификации, о которой раньше вы просто не задумывались. Отличный пример и объяснение часто можно найти в этом видео, где пользователь YouTube SethBling создает обучающую систему усиления, которая строит искусственную нейронную спецификацию, которая играет в игру Mario полностью самостоятельно. Другой успешный пример обучения армированию часто можно увидеть в этом видео, где корпорация DeepMind была готова обучить программу для освоения различных игр Atari.