Машинное обучение и нейронные сети - страница 53

 

Лекция 1.5 — Три типа обучения



Лекция 1.5 — Три типа обучения [Нейронные сети для машинного обучения]

В этом видео я расскажу о трех основных типах машинного обучения: обучении с учителем, обучении с подкреплением и обучении без учителя. Курс будет в первую очередь сосредоточен на обучении с учителем в первой половине и обучении без учителя во второй половине. К сожалению, из-за нехватки времени мы не будем рассматривать обучение с подкреплением.

Обучение с учителем включает в себя прогнозирование выходных данных с учетом входного вектора. Цель состоит в том, чтобы точно предсказать действительное число или метку класса. Регрессия имеет дело с действительными числами, такими как предсказание цен на акции, в то время как классификация включает присвоение меток, например, различение положительных и отрицательных случаев или распознавание рукописных цифр. Обучение с учителем опирается на класс моделей, который представляет собой набор моделей-кандидатов, представленных функциями, отображающими входные данные в выходные данные с использованием числовых параметров (W). Эти параметры корректируются, чтобы свести к минимуму несоответствие между прогнозируемым выходом (Y) и правильным выходом (t).

Обучение с подкреплением фокусируется на выборе действий или последовательностей действий, чтобы максимизировать получаемое вознаграждение. Действия выбираются на основе случайных вознаграждений, и цель состоит в том, чтобы максимизировать ожидаемую сумму будущих вознаграждений. Коэффициент дисконтирования обычно используется для определения приоритета немедленных вознаграждений перед отдаленными. Обучение с подкреплением сопряжено с проблемами из-за задержки вознаграждения и ограниченности информации, передаваемой скалярным вознаграждением.

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

В этом видео рассматриваются три основных типа машинного обучения: обучение с учителем, обучение с подкреплением и обучение без учителя. В то время как обучение с учителем направлено на прогнозирование результатов, обучение с подкреплением сосредоточено на максимизации вознаграждения за счет выбора действия. Неконтролируемое обучение направлено на обнаружение полезных внутренних представлений, таких как низкоразмерные представления или изученные функции, и включает в себя идентификацию базовых кластеров.

 

Лекция 2.1 — Типы архитектур нейронных сетей



Лекция 2.1 — Типы архитектур нейронных сетей [Нейронные сети для машинного обучения]

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

Другой тип архитектуры — это симметрично связанные сети, в которых веса между элементами одинаковы в обоих направлениях. Эти сети следуют энергетической функции, и их легче анализировать по сравнению с рекуррентными сетями. Однако они более ограничены в своих возможностях и не могут моделировать циклы.

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

Рекуррентные нейронные сети способны запоминать информацию в течение длительного времени в своих скрытых состояниях, но научить их использовать эту способность сложно. Однако последние алгоритмы добились значительного прогресса в обучении рекуррентных сетей. Эти сети можно использовать для таких задач, как предсказание следующего символа в последовательности, генерация текста или моделирование последовательных данных.

В целом, архитектуры нейронных сетей могут различаться по своим связям и возможностям: от сетей с прямой связью для простых вычислений до рекуррентных сетей для памяти и сложной динамики.

 

Лекция 2.2 — Персептроны: нейронные сети первого поколения



Лекция 2.2 — Персептроны: нейронные сети первого поколения [Нейронные сети для машинного обучения]

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

В области статистического распознавания образов используется стандартный подход к распознаванию образов. Сначала необработанные входные данные обрабатываются и преобразуются в набор или вектор активаций функций. Это преобразование выполняется с помощью предопределенных программ, основанных на здравом смысле, где человеческий опыт определяет, какие функции имеют отношение к поставленной задаче. Важно отметить, что этот этап предварительной обработки не включает обучение. Выбор подходящих функций является важным шагом и часто включает в себя пробы и ошибки. Пробуются различные функции и оценивается их эффективность. Благодаря этому итеративному процессу в конечном итоге определяется набор функций, который позволяет на следующем этапе обучения эффективно решить проблему.

Стадия обучения статистическому распознаванию образов включает определение весовых коэффициентов, связанных с каждой активацией функции. Эти веса представляют силу доказательств, которые каждая функция предоставляет в пользу или против гипотезы о том, что текущие входные данные принадлежат определенному шаблону или классу. Путем суммирования взвешенных активаций функций получается общий показатель доказательств, который сравнивается с пороговым значением. Если свидетельство превышает порог, входной вектор классифицируется как положительный пример распознаваемого шаблона.

Персептроны представляют собой особый тип системы распознавания статистических образов. Хотя существуют различные типы персептронов, стандартная форма, называемая Розенблаттом альфа-персептроном, состоит из входных единиц, которые преобразуются в активацию функций. Это преобразование может напоминать поведение нейронов, но важно отметить, что эта стадия системы не предполагает обучения. Как только активация функции получена, веса изучаются с использованием алгоритма обучения.

Персептроны получили известность в 1960-х годах благодаря работе Фрэнка Розенблатта, который подробно изучил их и описал в своей книге «Принципы нейродинамики». В книге представлены различные виды персептронов и наполнены новаторскими идеями. Одним из наиболее заметных вкладов стал мощный алгоритм обучения, связанный с персептронами, который породил большие надежды на их возможности.

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

В 1969 году Мински и Пейперт опубликовали основополагающую книгу под названием «Персептроны», в которой критически проанализированы возможности персептронов и подчеркнуты их ограничения. Однако более широкая область искусственного интеллекта ошибочно экстраполировала эти ограничения на все модели нейронных сетей. Преобладало мнение, что Мински и Пейперт доказали, что модели нейронных сетей непрактичны и неспособны к обучению сложным задачам. На самом деле выводы Мински и Пейперта были специфичны для изучаемых ими персептронов и не обесценивали потенциал нейронных сетей в целом.

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

Единицей принятия решения в персептроне является бинарный пороговый нейрон, тип нейрона, который ранее встречался в моделях нейронных сетей. Чтобы освежить наше понимание, эти нейроны вычисляют взвешенную сумму входных данных, полученных от других нейронов, добавляют член смещения и генерируют выход, равный единице, если сумма превышает ноль, в противном случае производя нулевой результат.

Чтобы упростить процесс обучения, смещения можно рассматривать как веса, добавляя к каждому входному вектору дополнительный вход с постоянным значением один. Таким образом, смещение включается в качестве веса в эту дополнительную строку ввода, что устраняет необходимость в отдельном правиле обучения для смещений. По сути, смещение становится эквивалентным весу, значение которого является отрицательным значением порога.

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

Для начала мы включаем дополнительный компонент со значением 1 в каждый входной вектор. Затем мы можем сосредоточиться на весах и игнорировать смещения, поскольку теперь они рассматриваются как веса в дополнительной строке ввода. Случаи обучения выбираются в соответствии с любой политикой, которая обеспечивает выбор каждого случая в разумные сроки, хотя точное определение «разумного времени» может варьироваться в зависимости от контекста.

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

  1. Если выход равен нулю, когда он должен быть равен единице (т. е. персептрон ложно отклоняет ввод), мы добавляем входной вектор к весовому вектору персептрона.
  2. Если выход равен единице, когда он должен быть равен нулю (т. е. перцептрон ошибочно принимает ввод), мы вычитаем входной вектор из вектора весов персептрона.

Примечательно, что эта простая процедура обучения гарантированно находит набор весов, который дает правильный результат для каждого случая обучения. Однако должно быть выполнено важное условие: должен существовать допустимый набор весов, который может правильно классифицировать все обучающие случаи. К сожалению, для многих интересных задач такой допустимый набор весов может не существовать.

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

В заключение можно сказать, что персептроны сыграли важную роль в ранней разработке моделей нейронных сетей. Хотя их ограничения были выявлены Мински и Пейпертом, важно отметить, что их выводы были специфичны для исследованных ими персептронов и не умаляли более широкий потенциал нейронных сетей. Процедура сходимости персептрона остается ценным инструментом, особенно для задач, связанных с большими векторами признаков. Однако ключ к успешному распознаванию образов лежит в выборе подходящих признаков, поскольку использование правильных признаков значительно облегчает процесс обучения, а использование неадекватных признаков может сделать обучение невозможным.

 

Лекция 2.3 — Геометрический вид персептронов



Лекция 2.3 — Геометрический вид персептронов [Нейронные сети для машинного обучения]

В этом видео мы углубимся в геометрическое понимание того, как обучаются персептроны. Для этого нам нужно мыслить в терминах весового пространства, многомерного пространства, где каждая точка соответствует определенной конфигурации всех весов. В этом пространстве мы можем представить тренировочные случаи в виде плоскостей, а процесс обучения включает в себя размещение вектора весов на правильной стороне всех тренировочных плоскостей.

Для тех, кто плохо разбирается в математике, этот материал может оказаться более сложным, чем предыдущий. Это может потребовать достаточного времени для понимания предстоящего контента, особенно если вы не знакомы с размышлениями о гиперплоскостях в многомерных пространствах. Вам нужно привыкнуть визуализировать 14-мерное пространство, сначала визуализируя трехмерное пространство, а затем вслух напоминая себе о многомерности. Это может показаться странным, но это обычная практика для облегчения понимания.

При работе с гиперплоскостями в 14-мерном пространстве сложность значительно возрастает, подобно переходу из 2D-пространства в 3D-пространство. Крайне важно понимать, что 14-мерное пространство обширно и сложно. Имея это в виду, давайте начнем с фокусировки на весовом пространстве.

Весовое пространство — это пространство, имеющее одно измерение для каждого веса в персептроне. Точка в весовом пространстве представляет определенную конфигурацию всех весов, если предположить, что мы устранили порог. Каждый тренировочный случай можно представить в виде гиперплоскости, проходящей через начало координат в весовом пространстве. Следовательно, точки в этом пространстве соответствуют весовым векторам, а обучающие примеры — плоскостям.

Для конкретного тренировочного случая веса должны лежать на одной стороне гиперплоскости, чтобы получить правильный результат. Давайте визуализируем эту концепцию на примере. Рассмотрим учебный случай, где правильный ответ — один. Вектор веса должен находиться на той же стороне гиперплоскости, что и направление, указанное обучающим вектором. Любой вектор весов на этой стороне будет иметь угол с входным вектором менее 90 градусов, что приводит к положительному скалярному произведению. Поскольку мы устранили порог, персептрон выдаст единицу, дав правильный ответ.

И наоборот, если весовой вектор лежит не на той стороне плоскости, его угол с входным вектором превысит 90 градусов, что даст отрицательное скалярное произведение. Следовательно, персептрон выдаст ноль, что приведет к неверному ответу.

Подводя итог, можно сказать, что векторы весов на одной стороне плоскости дают правильный ответ, а векторы на другой стороне дают неправильный ответ. Теперь давайте рассмотрим другой тренировочный случай, где правильный ответ равен нулю.

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

Давайте объединим эти два тренировочных случая в единую картину весового пространства. Весовое пространство сгущается, и возникает конус возможных весовых векторов. Любой вектор весов внутри этого конуса даст правильный ответ для обоих тренировочных случаев. Стоит отметить, что существование такого конуса не гарантируется. Могут быть сценарии, в которых весовые векторы не дают правильных ответов для всех случаев обучения. Однако, если такие весовые векторы существуют, они образуют конус.

Алгоритм обучения рассматривает обучающие случаи один за другим, корректируя весовой вектор так, чтобы он в конечном итоге находился внутри этого конуса. Важно отметить, что если у нас есть два хороших вектора весов, которые работают для всех тренировочных случаев, их среднее значение также будет находиться внутри конуса. Это означает, что задача выпуклая, а среднее двух решений само по себе является решением. Выпуклые задачи обучения упрощают процесс машинного обучения.

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

 

Лекция 2.4 — Почему обучение работает



Лекция 2.4 — Почему обучение работает [Нейронные сети для машинного обучения]

В этом видео мы стремимся представить доказательство того, что процедура обучения персептрона в конечном итоге приведет к сходимости весов в пределах конуса допустимых решений. Однако я хочу подчеркнуть, что этот курс в первую очередь фокусируется на инженерных аспектах, а не на строгих доказательствах. На протяжении всего курса будет несколько доказательств. Тем не менее, понимание того, как персептроны в конечном итоге находят правильный ответ, дает ценную информацию.

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

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

Хотя это утверждение кажется многообещающим, мы сталкиваемся с проблемой, иллюстрируемой вектором допустимого веса золота на диаграмме. Он лежит прямо на правой стороне плоскости, определяемой одним из тренировочных случаев, тогда как текущий вектор весов находится на неправильной стороне. Кроме того, входной вектор относительно велик, что приводит к тому, что добавление входного вектора сдвигает текущий вектор веса дальше от допустимого вектора веса золота. В результате наша первоначальная претензия не выполняется.

Однако мы можем исправить это, введя понятие достаточно допустимого вектора весов. Эти весовые векторы не только правильно классифицируют все варианты обучения, но и делают это с запасом, равным или превышающим длину входного вектора для каждого случая. Внутри конуса допустимых решений у нас есть еще один конус вполне допустимых решений.

С этой корректировкой наше доказательство становится верным. Теперь мы можем утверждать, что каждый раз, когда персептрон неправильно классифицирует случай, квадрат расстояния до всех допустимых весовых векторов уменьшается как минимум на квадрат длины входного вектора. Это обновление гарантирует, что вектор весов приближается к вполне допустимым решениям.

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

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

 

Лекция 2.5 — Чего не могут персептроны



Лекция 2.5 — Чего не могут персептроны [Нейронные сети для машинного обучения]

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

Однако даже без особенностей обучения персептроны все же могут многого добиться. Например, в таких задачах, как определение правдоподобия английского предложения, можно вручную определить многочисленные признаки и узнать их веса, чтобы определить вероятность того, что предложение будет грамматически правильным. Тем не менее, в долгосрочной перспективе функции обучения становятся необходимыми.

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

Существуют строгие ограничения на то, что персептроны могут узнать после того, как будут установлены характерные единицы и их веса. Давайте рассмотрим классический пример, чтобы понять эти ограничения. Мы хотим определить, может ли блок принятия решения о двоичном пороге научиться определять, имеют ли два признака одинаковое значение. У нас есть два положительных случая и два отрицательных случая, каждый из которых определяется однобитовыми функциями со значениями либо 1, либо 0. Положительные случаи возникают, когда обе функции включены (1) или когда обе функции выключены (0), в то время как отрицательные бывают случаи, когда одна функция включена (1), а другая выключена (0). Задача кажется простой, но алгебраически можно доказать невозможность удовлетворить всем четырем неравенствам, образованным этими парами вход-выход. Следовательно, невозможно найти веса, которые позволили бы персептрону обеспечить правильный вывод для всех четырех случаев.

Это ограничение также можно понять геометрически. Мы представляем себе пространство данных, в котором каждая точка представляет собой точку данных, а весовые векторы определяют плоскости, перпендикулярные точкам данных. Для правильного различения весовая плоскость должна отделять положительные случаи от отрицательных. Однако существуют наборы обучающих случаев, которые не являются линейно разделимыми, что означает, что никакая гиперплоскость не может правильно отделить случаи, где выход должен быть равен 1, от тех, где результат должен быть равен 0. Эта неспособность правильно разделить случаи известна как «множество обучающие случаи, которые не являются линейно разделимыми».

Другой разрушительный пример для персептронов включает в себя распознавание шаблонов, которые сохраняют свою идентичность даже при переводе с циклическим переносом. Персептроны не могут различать шаблоны с одинаковым количеством пикселей, если различение должно работать с преобразованными и обернутыми шаблонами. Это ограничение становится очевидным при рассмотрении шаблонов A и B. Шаблон A имеет четыре «включенных» пикселя, расположенных в форме штрих-кода, а шаблон B также имеет четыре «включенных» пикселя, расположенных по-другому. При переводе с зацикливанием персептроны не могут научиться различать эти шаблоны. Теорема Мински и Пейперта о групповой инвариантности утверждает, что перцептроны не могут распознавать шаблоны при переводе, если разрешен циклический перенос. Эта теорема имела особое значение в истории перцептронов, потому что распознавание образов направлено на выявление образов, несмотря на такие преобразования, как трансляция.

Теорема показала, что персептроны в том виде, в каком они были изначально сформулированы, не могут справиться с задачами распознавания образов, которые требуют инвариантности к трансляции с переносом. Это ограничение сильно ограничило их практическое применение и привело к снижению интереса и исследований персептронов в конце 1960-х - начале 1970-х годов. Однако важно отметить, что эти ограничения применяются только к однослойным персептронам с двоичными пороговыми единицами. Область искусственных нейронных сетей продолжала развиваться и преодолевать эти ограничения с развитием более продвинутых моделей, таких как многослойные персептроны (MLP) и сверточные нейронные сети (CNN). MLP вводят скрытые слои между входным и выходным слоями, что позволяет создавать более сложные и гибкие представления функций. Включая нелинейные функции активации и используя такие методы, как обратное распространение для корректировки веса, MLP могут преодолеть ограничение линейной разделимости однослойных персептронов.

CNN, с другой стороны, были специально разработаны для решения проблемы распознавания образов и классификации изображений. Они используют иерархическую структуру со сверточными слоями, которые извлекают локальные признаки, и объединяющими слоями, которые фиксируют пространственную инвариантность. CNN продемонстрировали замечательные успехи в таких задачах, как распознавание изображений, обнаружение объектов и обработка естественного языка.

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

Хотя у персептронов есть ограничения в их способности изучать сложные функции и решать определенные задачи распознавания образов, эти ограничения были устранены за счет разработки более продвинутых архитектур нейронных сетей. MLP и CNN, среди других моделей, преодолели ограничения однослойных персептронов и стали мощными инструментами в различных областях искусственного интеллекта.

 

Лекция 3.1 — Изучение весов линейного нейрона



Лекция 3.1 — Изучение весов линейного нейрона [Нейронные сети для машинного обучения]

его видео знакомит с алгоритмом обучения линейного нейрона, который отличается от алгоритма обучения персептрона. В персептроне веса всегда приближаются к хорошему набору весов, в то время как в линейном нейроне выходы всегда приближаются к целевым выходам.

Процедура сходимости персептрона гарантирует, что изменение весов приближает нас к хорошему набору весов. Однако эту гарантию нельзя распространить на более сложные сети, поскольку усреднение двух хороших наборов весов может привести к плохому набору весов. Поэтому для многослойных нейронных сетей мы не используем процедуру обучения персептрона, и доказательство улучшения при обучении также отличается.

Многослойные нейронные сети, часто называемые многослойными персептронами (MLP), требуют другого подхода для демонстрации прогресса. Вместо того, чтобы показывать, что веса приближаются к хорошему набору весов, мы демонстрируем, что фактические выходные значения приближаются к целевым выходным значениям. Это верно даже для невыпуклых задач, где усреднение весов двух хороших решений не дает хорошего решения.

Алгоритм обучения линейного нейрона проиллюстрирован на игрушечном примере. Он включает в себя начало со случайных предположений о ценах порций, а затем итеративную корректировку этих предположений, чтобы они соответствовали наблюдаемым ценам. Итеративный подход использует дельта-правило для обновления весов на основе скорости обучения, количества порций и остаточной ошибки.

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

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

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

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

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

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

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

Алгоритм обучения для линейного нейрона направлен на минимизацию ошибки между целевыми выходами и фактическими выходами. Он итеративно корректирует веса с помощью дельта-правила, которое включает скорость обучения, входные значения и разницу между целевыми и фактическими выходными данными. Хотя процесс обучения может быть медленным, а веса могут не улучшаться по отдельности, общая цель состоит в том, чтобы приблизиться к наилучшему приближению для данных обучающих случаев.

 

Лекция 3.2 — Поверхность ошибки для линейного нейрона



Лекция 3.2 — Поверхность ошибок для линейного нейрона [Нейронные сети для машинного обучения]

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

Представьте себе пространство, в котором горизонтальные размеры представляют веса, а вертикальные — ошибку. В этом пространстве различные настройки веса представлены в виде точек на горизонтальной плоскости, и высота каждой точки соответствует ошибке, связанной с этой настройкой веса, суммированной по всем тренировочным случаям. Для линейного нейрона ошибки для каждой настройки веса определяют поверхность ошибок, которая принимает форму квадратной чаши. Вертикальное сечение поверхности ошибки всегда дает параболу, а горизонтальное сечение образует эллипс. Важно отметить, что такое поведение справедливо только для линейных систем с квадратичной ошибкой. По мере того, как мы переходим к многослойным нелинейным нейронным сетям, поверхность ошибок становится более сложной.

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

Чередуя тренировочные случаи, мы можем двигаться зигзагом к точке решения, где пересекаются линии ограничений, указывая веса, удовлетворяющие обоим случаям. Кроме того, изучение поверхности ошибок позволяет нам понять условия, которые приводят к медленному обучению. Если эллипс, представляющий контурные линии, сильно вытянут, что происходит, когда линии, соответствующие двум обучающим примерам, почти параллельны, градиент проявляет неблагоприятное свойство. Градиент становится большим в направлении, в котором мы не хотим двигаться далеко, и маленьким в направлении, в котором мы хотим добиться значительного прогресса. Это несоответствие препятствует эффективному обучению и затрудняет пересечение овражистой структуры поверхности ошибок вдоль ее удлиненной оси.

Визуализация поверхности ошибок линейного нейрона дает ценную информацию о процессе обучения. Понимание геометрии поверхности помогает нам понять поведение дельта-правила и его влияние на скорость обучения.

 

Лекция 3.3 — Веса обучения логистического выходного нейрона


Лекция 3.3 — Веса обучения логистического выходного нейрона [Нейронные сети для машинного обучения]

Чтобы распространить правило обучения с линейного нейрона на многослойные сети нелинейных нейронов, нам нужно сделать два шага. Во-первых, нам нужно обобщить правило обучения для одного нелинейного нейрона, в частности, для логистического нейрона. Хотя в качестве примера используются логистические нейроны, можно использовать и другие типы нелинейных нейронов.

Логистический нейрон вычисляет свой логит, обозначаемый как z, который представляет собой сумму его смещения и взвешенной суммы его входных строк. Выход, обозначенный как y, является гладкой нелинейной функцией логита. На графике видно, что функция приближается к нулю, когда z велико и отрицательно, и приближается к единице, когда z велико и положительно, и демонстрирует плавные и нелинейные изменения между ними. Непрерывность логистической функции обеспечивает удобные производные для обучения. Чтобы получить производные логистического нейрона по весам (что очень важно для обучения), мы сначала вычисляем производную самого логита по весу. Эта производная упрощается до значения в строке ввода, обозначенного как xi. Точно так же производная от логита по xi есть вес wi.

Производная вывода по логиту может быть выражена через сам вывод. В частности, если выход представлен как y, то dy/dz задается как y * (1 - y). Математический вывод этого результата представлен на следующем слайде и включает в себя утомительные, но простые вычисления. Получив производную выхода по логиту и производную логита по весу, теперь мы можем определить производную выхода по весу. Применяя цепное правило, мы имеем dz/dw как xi и dy/dz как y * (1 - y). Следовательно, мы приходим к правилу обучения для логистического нейрона, очень похожему на дельта-правило.

Изменение ошибки, обозначаемое как de/dwi, при изменении веса получается путем суммирования по всем обучающим примерам (n) произведения значения на входной строке (xin) и остатка, представляющего собой разницу между целевой выход и фактический выход нейрона. Однако есть дополнительный член, связанный с наклоном логистической функции, а именно yn * (1 - yn). С этой небольшой модификацией дельта-правила мы приходим к правилу обучения градиентного спуска для обучения логистического нейрона.

Применяя правило обучения градиентного спуска к логистическому нейрону, мы можем эффективно обучать многослойные сети нелинейных нейронов. Это расширяет правило обучения за пределы линейных систем и позволяет решать более сложные задачи. Чтобы понять, как это правило обучения работает в контексте многослойных сетей, давайте рассмотрим в качестве примера простую двухслойную сеть. У нас есть входной слой с несколькими нейронами и выходной слой с одним логистическим нейроном. Веса между слоями обозначаются как W, а смещения — как b.

Процесс обучения включает два этапа. Во-первых, мы вычисляем выход сети для заданного входа. Это делается путем распространения входных данных по сети, применения логистической функции к общему входу каждого нейрона (логит) и получения окончательного результата. Затем мы вычисляем градиенты ошибки по отношению к весам, используя цепное правило. Начиная с выходного слоя, мы вычисляем производную ошибки по выходу, которая представляет собой просто разницу между целевым выходом и фактическим выходом сети. Затем мы распространяем этот градиент ошибки обратно по сети, умножая его на производную логистической функции на каждом нейроне, чтобы получить градиенты на скрытом слое. Наконец, мы обновляем веса, используя вычисленные градиенты и скорость обучения. Скорость обучения определяет размер шага в обновлении веса и может регулироваться для управления скоростью обучения. Обновление веса следует уравнению: ΔW = скорость_обучения * градиент_ошибки * ввод, где ΔW представляет собой изменение весов.

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

Распространяя правило обучения с линейных нейронов на логистические нейроны и применяя его к многослойным сетям, мы можем обучать сложные нелинейные модели. Это позволяет нам решать широкий круг задач, включая распознавание образов, классификацию и регрессию, путем итеративной корректировки весов на основе градиентов ошибок.

 

Лекция 3.4 — Алгоритм обратного распространения



Лекция 3.4 — Алгоритм обратного распространения [Нейронные сети для машинного обучения]

Теперь, когда мы рассмотрели предварительные сведения, давайте углубимся в центральную проблему изучения нескольких слоев функций. В этом видео мы, наконец, опишем алгоритм обратного распространения, появившийся в 1980-х годах и вызвавший всплеск интереса к нейронным сетям.

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

В идеале мы хотели бы автоматизировать цикл разработки функций, позволяя компьютеру находить хорошие функции, не требуя человеческого понимания или повторных проб и ошибок. Именно здесь на ум приходит концепция обучения путем возмущения весов. Случайное изменение веса похоже на мутацию, и мы можем наблюдать, улучшает ли это производительность сети. Если производительность улучшается, мы сохраняем это изменение веса, напоминая форму обучения с подкреплением.

Однако этот метод крайне неэффективен. Чтобы оценить, улучшает ли сеть изменение веса, требуется несколько прямых проходов в репрезентативном наборе обучающих случаев. Оценка воздействия изменения веса на основе одного тренировочного случая неадекватна. Кроме того, по мере обучения большие изменения весов, как правило, ухудшают ситуацию, поскольку решающее значение имеют правильные относительные значения между весами. К концу обучения не только требуется много времени для оценки каждого изменения веса, но и сами изменения должны быть небольшими.

Есть немного лучшие способы использования возмущений для обучения. Один из подходов состоит в том, чтобы возмущать все веса параллельно, а затем сопоставлять прирост производительности с изменениями веса. Однако этот метод не дает существенного улучшения. Проблема заключается в необходимости проведения многочисленных испытаний с различными случайными возмущениями всех весов, чтобы выделить эффект изменения одного веса среди шума, вызванного изменением других.

Альтернативный подход, демонстрирующий некоторое улучшение, состоит в том, чтобы случайным образом возмущать действия скрытых единиц вместо весов. Как только будет определено, что возмущение активности скрытой единицы в конкретном тренировочном примере улучшает производительность, можно вычислить изменения веса. Поскольку действий меньше, чем весов, алгоритм становится более эффективным. Однако обратное распространение по-прежнему превосходит эти методы по эффективности с коэффициентом, равным количеству нейронов в сети.

Основная идея обратного распространения заключается в том, что, хотя мы можем не знать, что должны делать скрытые модули (отсюда и термин «скрытый»), мы можем вычислить, насколько быстро изменяется ошибка, когда мы изменяем активность скрытого модуля в конкретном учебном примере. Вместо того, чтобы использовать действия скрытых единиц в качестве желаемых состояний, мы используем производные ошибки по отношению к действиям. Поскольку каждый скрытый блок может влиять на несколько выходных блоков, его эффекты необходимо комбинировать, что можно сделать эффективно.

Чтобы обобщить алгоритм обратного распространения для одного обучающего случая, мы начнем с определения ошибки как квадрата разницы между целевыми значениями выходных единиц и фактическими значениями, полученными сетью. Дифференцируя эту ошибку, мы получаем выражение того, как ошибка изменяется по отношению к выходу выходной единицы. Затем мы можем вычислить производные ошибок для скрытых устройств, суммируя эффекты всех исходящих соединений от скрытого устройства, используя ранее вычисленные производные ошибок слоя выше.

Алгоритм обратного распространения позволяет нам эффективно распространять производные ошибки с одного уровня на предыдущий. Когда у нас есть производные ошибки для скрытых единиц, мы можем легко вычислить производные ошибки для весов, входящих в скрытую единицу. Это делается путем умножения производной ошибки по отношению к общему вводу, полученному устройством, на активность устройства на нижнем уровне. Вычисленные производные ошибки для весов представляют, как ошибка изменяется при изменении определенного веса.

Теперь давайте наметим шаги, связанные с алгоритмом обратного распространения для одного обучающего примера:

  1. Задайте ошибку как квадрат разницы между целевыми значениями и фактическими выходными значениями сети.

  2. Вычислите производную ошибки по отношению к выходу каждой единицы вывода, применяя цепное правило, которое включает умножение производной выхода по отношению к общему вводу на производную ошибки по отношению к выходу.

  3. Вычислите производную ошибки по отношению к выходу каждого скрытого устройства путем суммирования эффектов всех исходящих соединений от скрытого устройства. Это включает в себя умножение веса каждого соединения на производную ошибки, вычисленную в слое выше.

  4. Повторите шаг 3 для всех скрытых слоев, распространяя производные ошибки обратно по сети.

  5. Вычислите производные ошибок для весов, входящих в каждую единицу. Это делается путем умножения производной ошибки по отношению к общему вводу, полученному устройством, на активность устройства на нижнем уровне.

Следуя этим шагам, мы можем эффективно вычислить производные ошибки для всех весов в сети на основе одного обучающего примера. Алгоритм обратного распространения ошибки позволяет нам понять, как изменение каждого веса влияет на общую ошибку, и облегчает процесс обучения. Понимание и реализация алгоритма обратного распространения имеет решающее значение для обучения глубоких нейронных сетей с несколькими уровнями функций. Хотя это объяснение может потребовать тщательного изучения, понимание основных концепций и вычислений будет необходимо для эффективного использования обратного распространения в обучении нейронной сети.

Как только мы вычислили производные ошибки для всех весов в сети с помощью алгоритма обратного распространения, мы можем использовать эту информацию для обновления весов и улучшения производительности сети. Этот процесс известен как корректировка веса или обновление веса. Обновление веса обычно включает использование алгоритма оптимизации, такого как градиентный спуск, для итеративной корректировки весов в направлении, которое минимизирует ошибку. Основная идея состоит в том, чтобы обновить каждый вес путем вычитания небольшой доли соответствующей производной ошибки, умноженной на параметр скорости обучения.

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

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

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

Алгоритм обратного распространения — это мощный метод эффективного вычисления производных ошибок в нейронных сетях с несколькими слоями. Распространяя информацию об ошибке обратно по сети, мы можем определить, как изменения весов влияют на общую ошибку. Затем эта информация используется для итеративного обновления весов, что позволяет сети обучаться и улучшать свою производительность с течением времени.

Причина обращения: