С момента описания первого искусственного нейрона Уорреном Мак-Каллоком и Уолтером Питтсом прошло более пятидесяти лет. С тех пор многое изменилось, и сегодня нейросетевые алгоритмы применяются повсеместно. И хотя нейронные сети способны на многое, исследователи при работе с ними сталкиваются с рядом трудностей: от переобучения до проблемы «черного ящика».
Если термины «катастрофическая забывчивость» и «регуляризация весов» вам пока ни о чем не говорят, читайте дальше: попробуем разобраться во всем по порядку.
/ Фотография Jun / CC-SA
Основное преимущество нейронных сетей перед другими методами машинного обучения состоит в том, что они могут распознавать более глубокие, иногда неожиданные закономерности в данных. В процессе обучения нейроны способны реагировать на полученную информацию в соответствии с принципами генерализации, тем самым решая поставленную перед ними задачу.
К областям, где сети находят практическое применение уже сейчас, можно отнести медицину (например, очистка показаний приборов от шумов, анализ эффективности проведённого лечения), интернет (ассоциативный поиск информации), экономику (прогнозирование курсов валют, автоматический трейдинг), игры (например, го) и другие. Нейросети могут использоваться практически для чего угодно в силу своей универсальности. Однако волшебной таблеткой они не являются, и чтобы они начали функционировать должным образом, требуется проделать много предварительной работы.
Одним из ключевых элементов нейронной сети является способность обучаться. Нейронная сеть — это адаптивная система, умеющая изменять свою внутреннюю структуру на базе поступающей информации. Обычно такой эффект достигается с помощью корректировки значений весов.
Связи между нейронами на соседних слоях нейросети — это числа, описывающие значимость сигнала между двумя нейронами. Если обученная нейронная сеть верно реагирует на входную информацию, то настраивать веса нет необходимости, а в противном случае с помощью какого-либо алгоритма обучения нужно изменить веса, улучшив результат.
Существует несколько принципиально отличающихся подходов к обучению, в привязке к поставленной задаче. Первый — обучение с учителем. В этом случае входные данные представляют собой пары: объект и его характеристику. Такой подход применяется, например, в распознавании изображений: обучение проводится по размеченной базе из картинок и расставленных вручную меток того, что на них нарисовано.
Самой известной из таких баз является ImageNet. При такой постановке задачи обучение мало чем отличается от, например, распознавания эмоций, которым занимается Neurodata Lab. Сети демонстрируются примеры, она делает предположение, и, в зависимости от его правильности, корректируются веса. Процесс повторяется до тех пор, пока точность не увеличивается до искомых величин.
Второй вариант — обучение без учителя. Типичными задачами для него считаются кластеризация и некоторые постановки задачи поиска аномалий. При таком раскладе истинные метки обучающих данных нам недоступны, но есть необходимость в поиске закономерностей. Иногда схожий подход применяют для предобучения сети в задаче обучения с учителем. Идея состоит в том, чтобы начальным приближением для весов было не случайное решение, а уже умеющее находить закономерности в данных.
Ну и третий вариант — обучение с подкреплением — стратегия, построенная на наблюдениях. Представьте себе мышь, бегущую по лабиринту. Если она повернет налево, то получит кусочек сыра, а если направо — удар током. Со временем мышь учится поворачивать только налево. Нейронная сеть действует точно так же, подстраивая веса, если итоговый результат — «болезненный». Обучение с подкреплением активно применяется в робототехнике: «ударился ли робот в стену или остался невредим?». Все задачи, имеющие отношение к играм, в том числе самая известная из них — AlphaGo, основаны именно на обучении с подкреплением.
Главная проблема нейросетей — переобучение. Оно заключается в том, что сеть «запоминает» ответы вместо того, чтобы улавливать закономерности в данных. Наука поспособствовала появлению на свет нескольких методов борьбы с переобучением: сюда относятся, например, регуляризация, нормализация батчей, наращивание данных и другие. Иногда переобученная модель характеризуется большими абсолютными значениями весов.
Очевидный способ борьбы с такого рода переобучением – регуляризация весов. Она состоит либо в искусственном ограничении на значения весов, либо в добавлении штрафа в меру ошибки на этапе обучения. Такой подход не решает проблему полностью, но чаще всего улучшает результат.
Второй способ основан на ограничении выходного сигнала, а не значений весов, — речь о нормализации батчей. На этапе обучения данные подаются нейросети пачками — батчами. Выходные значения для них могут быть какими угодно, и тем их абсолютные значения больше, чем выше значения весов. Если из каждого из них мы вычтем какое-то одно значение и поделим результат на другое, одинаково для всего батча, то мы сохраним качественные соотношения (максимальное, например, все равно останется максимальным), но выход будет более удобным для обработки его следующим слоем.
Третий подход работает не всегда. Как уже говорилось, переобученная нейросеть воспринимает многие точки как аномальные, которые хочется обрабатывать отдельно. Идея состоит в наращивании обучающей выборки, чтобы точки были как будто той же природы, что и исходная выборка, но сгенерированы искусственно. Однако тут сразу рождается большое число сопутствующих проблем: подбор параметров для наращивания выборки, критическое увеличение времени обучения и прочие.
![](https://habrastorage.org/r/w1560/web/4d1/0da/da0/4d10dada0b62480791b857a4d41a41b0.png)
Эффект от удаления аномального значения из тренировочного свода данных (источник)
В обособленную проблему выделяется поиск настоящих аномалий в обучающей выборке. Иногда это даже рассматривают как отдельную задачу. Изображение выше демонстрирует эффект исключения аномального значения из набора. В случае нейронных сетей ситуация будет аналогичной. Правда, поиск и исключение таких значений — нетривиальная задача. Для этого применяются специальные техники — подробнее о них вы можете прочитать по ссылкам (здесь и здесь).
Работа в динамически изменяющихся средах (например, в финансовых) сложна для нейронных сетей. Даже если вам удалось успешно натренировать сеть, нет гарантий, что она не перестанет работать в будущем. Финансовые рынки постоянно трансформируются, поэтому то, что работало вчера, может с тем же успехом «сломаться» сегодня.
Здесь исследователям или приходится тестировать разнообразные архитектуры сетей и выбирать из них лучшую, или использовать динамические нейронные сети. Последние «следят» за изменениями среды и подстраивают свою архитектуру в соответствии с ними. Одним из используемых в этом случае алгоритмов является метод MSO (multi-swarm optimization).
Безусловно, ученые трудятся над решением и этой проблемы. Разработчики из DeepMind недавно предложили способ борьбы с катастрофической забывчивостью, который заключается в том, что наиболее важные веса в нейронной сети при выполнении некой задачи А искусственно делаются более устойчивыми к изменению в процессе обучения на задаче Б.
Новый подход получил название Elastic Weight Consolidation (упругое закрепление весов) из-за аналогии с упругой пружинкой. Технически он реализуется следующим образом: каждому весу в нейронной сети присваивается параметр F, который определяет его значимость только в рамках определенной задачи. Чем больше F для конкретного нейрона, тем сложнее будет изменить его вес при обучении новой задаче. Это позволяет сети «запоминать» ключевые навыки. Технология уступила «узкоспециализированным» сетям в отдельных задачах, но показала себя с лучшей стороны по сумме всех этапов.
Еще одна сложность работы с нейронными сетями состоит в том, что ИНС фактически являются черными ящиками. Строго говоря, кроме результата, из нейросети не вытащишь ничего, даже статистические данные. При этом сложно понять, как сеть принимает решения. Единственный пример, где это не так — сверточные нейронные сети в задачах распознавания. В этом случае некоторые промежуточные слои имеют смысл карт признаков (одна связь показывает то, встретился ли какой-то простой шаблон в исходной картинке), поэтому возбуждение различных нейронов можно отследить.
Разумеется, указанный нюанс делает достаточно сложным использование нейронных сетей в приложениях, когда ошибки критичны. Например, менеджеры фондов не могут понять, как нейронная сеть принимает решения. Это приводит к тому, что невозможно корректно оценить риски торговых стратегий. Аналогично банки, прибегающие к нейронным сетям для моделирования кредитных рисков, не смогут сказать, почему этот самый клиент имеет сейчас именно такой кредитный рейтинг.
Поэтому разработчики нейросетей ищут способы обойти это ограничение. Например, работа ведется над так называемыми алгоритмами изъятия правил (rule-extraction algorithms), чтобы повысить прозрачность архитектур. Эти алгоритмы извлекают информацию из нейросетей либо в виде математических выражений и символьной логики, либо в виде деревьев решений.
Само собой, искусственные нейронные сети активно помогают осваивать новые технологии и развивать существующие. Сегодня на пике популярности находится программирование беспилотных автомобилей, в которых нейросети в режиме реального времени анализируют окружающую обстановку. IBM Watson из года в год открывает для себя всё новые прикладные области, включая медицину. В Google существует целое подразделение, которое занимается непосредственно искусственным интеллектом.
Вместе с тем порой нейронная есть — не лучший способ решить задачу. Например, сети «отстают» по таким направлениям, как создание изображений высокого разрешения, генерация человеческой речи и глубокий анализ видеопотоков. Работа с символами и рекурсивными структурами также даётся нейросистемам нелегко. Верно это и для вопросно-ответных систем.
Изначально идея нейронных сетей заключалась в копировании и даже воссоздании механизмов функционирования мозга. Однако человечеству по-прежнему нужно разрешить проблему скорости работы нейронных сетей, разработать новые алгоритмы логического вывода. Существующие алгоритмы по меньшей мере в 10 раз уступают возможностям мозга, что неудовлетворительно во многих ситуациях.
При этом ученые до сих пор не до конца определились, в каком направлении следует развивать нейросети. Индустрия старается как максимально приблизить нейросети к модели человеческого мозга, так и генерировать технологии и концептуальные схемы, абстрагируясь ото всех «аспектов человеческой природы». На сегодняшний день — это что-то вроде «открытого произведения» (если воспользоваться термином Умберто Эко), где практически любые опыты допустимы, а фантазии – приемлемы.
Деятельность ученых и разработчиков, занимающихся нейросетями, требует глубокой подготовки, обширных знаний, использования нестандартных методик, поскольку нейросеть сама по себе — это не «серебряная пуля», способная решить любые проблемы и задачи без участия человека. Это комплексный инструмент, который в умелых руках может делать удивительные вещи. И у него еще всё впереди.
Если термины «катастрофическая забывчивость» и «регуляризация весов» вам пока ни о чем не говорят, читайте дальше: попробуем разобраться во всем по порядку.
![](https://habrastorage.org/web/174/a86/d50/174a86d50b014947afd69ff077368dd4.jpeg)
За что мы любим нейросети
Основное преимущество нейронных сетей перед другими методами машинного обучения состоит в том, что они могут распознавать более глубокие, иногда неожиданные закономерности в данных. В процессе обучения нейроны способны реагировать на полученную информацию в соответствии с принципами генерализации, тем самым решая поставленную перед ними задачу.
К областям, где сети находят практическое применение уже сейчас, можно отнести медицину (например, очистка показаний приборов от шумов, анализ эффективности проведённого лечения), интернет (ассоциативный поиск информации), экономику (прогнозирование курсов валют, автоматический трейдинг), игры (например, го) и другие. Нейросети могут использоваться практически для чего угодно в силу своей универсальности. Однако волшебной таблеткой они не являются, и чтобы они начали функционировать должным образом, требуется проделать много предварительной работы.
Обучение нейросетей 101
Одним из ключевых элементов нейронной сети является способность обучаться. Нейронная сеть — это адаптивная система, умеющая изменять свою внутреннюю структуру на базе поступающей информации. Обычно такой эффект достигается с помощью корректировки значений весов.
Связи между нейронами на соседних слоях нейросети — это числа, описывающие значимость сигнала между двумя нейронами. Если обученная нейронная сеть верно реагирует на входную информацию, то настраивать веса нет необходимости, а в противном случае с помощью какого-либо алгоритма обучения нужно изменить веса, улучшив результат.
Как правило, это делают с помощью метода обратного распространения ошибки: для каждого из обучающих примеров веса корректируются так, чтобы уменьшить ошибку. Считается, что при правильно подобранной архитектуре и достаточном наборе обучающих данных сеть рано или поздно обучится.
Существует несколько принципиально отличающихся подходов к обучению, в привязке к поставленной задаче. Первый — обучение с учителем. В этом случае входные данные представляют собой пары: объект и его характеристику. Такой подход применяется, например, в распознавании изображений: обучение проводится по размеченной базе из картинок и расставленных вручную меток того, что на них нарисовано.
Самой известной из таких баз является ImageNet. При такой постановке задачи обучение мало чем отличается от, например, распознавания эмоций, которым занимается Neurodata Lab. Сети демонстрируются примеры, она делает предположение, и, в зависимости от его правильности, корректируются веса. Процесс повторяется до тех пор, пока точность не увеличивается до искомых величин.
Второй вариант — обучение без учителя. Типичными задачами для него считаются кластеризация и некоторые постановки задачи поиска аномалий. При таком раскладе истинные метки обучающих данных нам недоступны, но есть необходимость в поиске закономерностей. Иногда схожий подход применяют для предобучения сети в задаче обучения с учителем. Идея состоит в том, чтобы начальным приближением для весов было не случайное решение, а уже умеющее находить закономерности в данных.
Ну и третий вариант — обучение с подкреплением — стратегия, построенная на наблюдениях. Представьте себе мышь, бегущую по лабиринту. Если она повернет налево, то получит кусочек сыра, а если направо — удар током. Со временем мышь учится поворачивать только налево. Нейронная сеть действует точно так же, подстраивая веса, если итоговый результат — «болезненный». Обучение с подкреплением активно применяется в робототехнике: «ударился ли робот в стену или остался невредим?». Все задачи, имеющие отношение к играм, в том числе самая известная из них — AlphaGo, основаны именно на обучении с подкреплением.
Переобучение: в чем проблема и как ее решить
Главная проблема нейросетей — переобучение. Оно заключается в том, что сеть «запоминает» ответы вместо того, чтобы улавливать закономерности в данных. Наука поспособствовала появлению на свет нескольких методов борьбы с переобучением: сюда относятся, например, регуляризация, нормализация батчей, наращивание данных и другие. Иногда переобученная модель характеризуется большими абсолютными значениями весов.
Механизм этого явления примерно такой: исходные данные нередко сильно многомерны (одна точка из обучающей выборки изображается большим набором чисел), и вероятность того, что наугад взятая точка окажется неотличимой от выброса, будет тем больше, чем больше размерность. Вместо того, чтобы «вписывать» новую точку в имеющуюся модель, корректируя веса, нейросеть как будто придумывает сама себе исключение: эту точку мы классифицируем по одним правилам, а другие — по другим. И таких точек обычно много.
Очевидный способ борьбы с такого рода переобучением – регуляризация весов. Она состоит либо в искусственном ограничении на значения весов, либо в добавлении штрафа в меру ошибки на этапе обучения. Такой подход не решает проблему полностью, но чаще всего улучшает результат.
Второй способ основан на ограничении выходного сигнала, а не значений весов, — речь о нормализации батчей. На этапе обучения данные подаются нейросети пачками — батчами. Выходные значения для них могут быть какими угодно, и тем их абсолютные значения больше, чем выше значения весов. Если из каждого из них мы вычтем какое-то одно значение и поделим результат на другое, одинаково для всего батча, то мы сохраним качественные соотношения (максимальное, например, все равно останется максимальным), но выход будет более удобным для обработки его следующим слоем.
Третий подход работает не всегда. Как уже говорилось, переобученная нейросеть воспринимает многие точки как аномальные, которые хочется обрабатывать отдельно. Идея состоит в наращивании обучающей выборки, чтобы точки были как будто той же природы, что и исходная выборка, но сгенерированы искусственно. Однако тут сразу рождается большое число сопутствующих проблем: подбор параметров для наращивания выборки, критическое увеличение времени обучения и прочие.
![](https://habrastorage.org/web/4d1/0da/da0/4d10dada0b62480791b857a4d41a41b0.png)
Эффект от удаления аномального значения из тренировочного свода данных (источник)
В обособленную проблему выделяется поиск настоящих аномалий в обучающей выборке. Иногда это даже рассматривают как отдельную задачу. Изображение выше демонстрирует эффект исключения аномального значения из набора. В случае нейронных сетей ситуация будет аналогичной. Правда, поиск и исключение таких значений — нетривиальная задача. Для этого применяются специальные техники — подробнее о них вы можете прочитать по ссылкам (здесь и здесь).
Одна сеть – одна задача или «проблема катастрофической забывчивости»
Работа в динамически изменяющихся средах (например, в финансовых) сложна для нейронных сетей. Даже если вам удалось успешно натренировать сеть, нет гарантий, что она не перестанет работать в будущем. Финансовые рынки постоянно трансформируются, поэтому то, что работало вчера, может с тем же успехом «сломаться» сегодня.
Здесь исследователям или приходится тестировать разнообразные архитектуры сетей и выбирать из них лучшую, или использовать динамические нейронные сети. Последние «следят» за изменениями среды и подстраивают свою архитектуру в соответствии с ними. Одним из используемых в этом случае алгоритмов является метод MSO (multi-swarm optimization).
Более того, нейросети обладают определенной особенностью, которую называют катастрофической забывчивостью (catastrophic forgetting). Она сводится к тому, что нейросеть нельзя последовательно обучить нескольким задачам — на каждой новой обучающей выборке все веса нейронов будут переписаны, и прошлый опыт будет «забыт».
Безусловно, ученые трудятся над решением и этой проблемы. Разработчики из DeepMind недавно предложили способ борьбы с катастрофической забывчивостью, который заключается в том, что наиболее важные веса в нейронной сети при выполнении некой задачи А искусственно делаются более устойчивыми к изменению в процессе обучения на задаче Б.
Новый подход получил название Elastic Weight Consolidation (упругое закрепление весов) из-за аналогии с упругой пружинкой. Технически он реализуется следующим образом: каждому весу в нейронной сети присваивается параметр F, который определяет его значимость только в рамках определенной задачи. Чем больше F для конкретного нейрона, тем сложнее будет изменить его вес при обучении новой задаче. Это позволяет сети «запоминать» ключевые навыки. Технология уступила «узкоспециализированным» сетям в отдельных задачах, но показала себя с лучшей стороны по сумме всех этапов.
Армированный черный ящик
Еще одна сложность работы с нейронными сетями состоит в том, что ИНС фактически являются черными ящиками. Строго говоря, кроме результата, из нейросети не вытащишь ничего, даже статистические данные. При этом сложно понять, как сеть принимает решения. Единственный пример, где это не так — сверточные нейронные сети в задачах распознавания. В этом случае некоторые промежуточные слои имеют смысл карт признаков (одна связь показывает то, встретился ли какой-то простой шаблон в исходной картинке), поэтому возбуждение различных нейронов можно отследить.
Разумеется, указанный нюанс делает достаточно сложным использование нейронных сетей в приложениях, когда ошибки критичны. Например, менеджеры фондов не могут понять, как нейронная сеть принимает решения. Это приводит к тому, что невозможно корректно оценить риски торговых стратегий. Аналогично банки, прибегающие к нейронным сетям для моделирования кредитных рисков, не смогут сказать, почему этот самый клиент имеет сейчас именно такой кредитный рейтинг.
Поэтому разработчики нейросетей ищут способы обойти это ограничение. Например, работа ведется над так называемыми алгоритмами изъятия правил (rule-extraction algorithms), чтобы повысить прозрачность архитектур. Эти алгоритмы извлекают информацию из нейросетей либо в виде математических выражений и символьной логики, либо в виде деревьев решений.
Нейронные сети — это лишь инструмент
Само собой, искусственные нейронные сети активно помогают осваивать новые технологии и развивать существующие. Сегодня на пике популярности находится программирование беспилотных автомобилей, в которых нейросети в режиме реального времени анализируют окружающую обстановку. IBM Watson из года в год открывает для себя всё новые прикладные области, включая медицину. В Google существует целое подразделение, которое занимается непосредственно искусственным интеллектом.
Вместе с тем порой нейронная есть — не лучший способ решить задачу. Например, сети «отстают» по таким направлениям, как создание изображений высокого разрешения, генерация человеческой речи и глубокий анализ видеопотоков. Работа с символами и рекурсивными структурами также даётся нейросистемам нелегко. Верно это и для вопросно-ответных систем.
Изначально идея нейронных сетей заключалась в копировании и даже воссоздании механизмов функционирования мозга. Однако человечеству по-прежнему нужно разрешить проблему скорости работы нейронных сетей, разработать новые алгоритмы логического вывода. Существующие алгоритмы по меньшей мере в 10 раз уступают возможностям мозга, что неудовлетворительно во многих ситуациях.
При этом ученые до сих пор не до конца определились, в каком направлении следует развивать нейросети. Индустрия старается как максимально приблизить нейросети к модели человеческого мозга, так и генерировать технологии и концептуальные схемы, абстрагируясь ото всех «аспектов человеческой природы». На сегодняшний день — это что-то вроде «открытого произведения» (если воспользоваться термином Умберто Эко), где практически любые опыты допустимы, а фантазии – приемлемы.
Деятельность ученых и разработчиков, занимающихся нейросетями, требует глубокой подготовки, обширных знаний, использования нестандартных методик, поскольку нейросеть сама по себе — это не «серебряная пуля», способная решить любые проблемы и задачи без участия человека. Это комплексный инструмент, который в умелых руках может делать удивительные вещи. И у него еще всё впереди.