Как обучаются нейросети
Как обучить свою первую нейросеть
Главным трендом последних нескольких лет, безусловно, можно назвать нейросети, машинное обучение и все, что с ними связано. И на то есть серьезные причины, ведь в последнее время нейронные сети удивляют своими умениями. Мало того, что нейросеть уже может нарисовать портреты людей по одним только их голосам и «оживлять» портреты Достоевского и Мэрилин Монро, так она еще способна показать, как вы будете выглядеть через 20, 30 и даже 50 лет! Конечно, все это делает не одна нейросеть — в мире существует множество подобных разработок, которыми занимаются специалисты по Data Science.
Научиться обучать нейросети гораздо проще, чем кажется
Как появились нейросети
Все началось с попыток ученых приблизить принцип работы компьютера к образу мышления человека. На это ушли десятилетия исследований, и в итоге это стало возможным при помощи нейросетей — компьютерных систем, собранных из сотен, тысяч или миллионов искусственных клеток мозга, которые способны обучаться и действовать по принципу, чрезвычайно похожему на то, как работает мозг человека.
Конечно, нельзя говорить, что нейронная сеть — это точная искусственная копия мозга. Важно отметить, что нейросеть — это прежде всего компьютерная симуляция: такие сети созданы посредством программирования обычных компьютеров, в которых традиционным образом работают обычные транзисторы, объединенные в логические связи.
Как нейросеть генерирует новые фото
Из чего состоят нейросети
Обычная искусственная нейронная сеть состоит из десятков, сотен, тысяч или даже миллионов искусственных нейронов. Их называют блоками — они выстроены в слои, где каждый блок соединен с соседним. Есть блоки ввода, с помощью которых нейросеть получает информацию, и блоки вывода — они как раз отвечают за результат обработки.
Когда сеть обучается, образцы информации «скармливают» ей через блоки ввода, а затем добираются до блоков вывода. Например, можно показать нейросети огромное количество фотографий стульев и столов, максимально доступно объяснив ей разницу между этими предметами мебели. А затем попросить ее распознать объект на картинке, где изображен шкаф. В зависимости от того, насколько эффективно вы обучили нейросеть, она попытается отнести увиденное к категории, основываясь на имеющемся опыте.
Как обучают нейросети
Нейросети обучаются «методом обратного распространения ошибки». С его помощью удается сопоставить выходные данные с теми данными, которые ожидалось получить, и использовать различия между этими данными для внесения изменения в связи между блоками, занятыми в сети. Чем больше обучается нейронная сеть, тем быстрее получается свести до нуля разницу между желаемым и реальным результатами.
Одна из моделей машинного обучения
Как только нейросеть прошла обучение с использованием достаточного количества примеров, она достигает стадии, когда вы можете предоставить ей совершенно новый набор вводных данных, которого она никогда не видела, и следить за ее реакцией.
Области использования нейросетей ничем не ограничены. Так, они могут осуществлять поиск по картинке или выступать в роли голосового ассистента — та же Алиса уже максимально приблизилась по своему поведению к реальному человеку. Или высчитывать вероятность заболеваний, находить опухоли на снимках, бороться с мошенниками и так далее.
Можно ли самому научиться работать с нейросетями
Раньше такая возможность предоставлялась только ученым, поскольку наработки в области нейронных сетей и машинного обучения были слишком «сырыми». Но сейчас любая технологическая компания генерирует огромный объем данных, который нужно обрабатывать, чтобы затем на его основе оптимизировать бизнес и проанализировать перспективы. Для этого и других задач, связанных с нейросетями и машинным обучением, нужны специалисты по Data Science.
Как им стать? Самостоятельно сделать это почти невозможно. Это серьезная специализация, которая требует взаимодействия с теми, кто уже работает в данной области. Поэтому школа данных SkillFactory открывает новый набор на полный курс по Data Science. В рамках курса профессионалы отрасли, в том числе сотрудники Яндекса и NVIDIA, обучают тонкостям работы, о которых не пишут в учебниках.
Все преподаватели — специалисты в области Data Science
С помощью этого курса можно освоить науку по работе с данными с нуля, даже если вы ни разу в жизни не занимались программированием. Он позволяет получить все навыки, необходимые специалисту по Data Science — от программирования на Python, в том числе углубленного изучения Pandas для анализа данных, до машинного обучения, глубинного обучения и исследования данных. Курс состоит примерно из 20% теории и 80% практики, поскольку только на реальных примерах возможность стать профи в этой области.
Программа курса рассчитана на 12 месяцев
В процессе обучения вы сможете создавать свои проекты в сфере распознавания изображений, NLP и скоринга. Вместе с преподавателями и менторами разберетесь в деталях работы и получите необходимую обратную связь. Кроме того, в SkillFactory помогают с трудоустройством и рекомендуют к стажировке в крупных компаниях. Например, выпускники получают возможность работать в «Альфа-Банке», Bayer, Henkel, «Сбербанке» и других ведущих организациях.
По окончании обучения выдается сертификат
Присоединяйтесь к курсу уже сейчас и получите скидку 15% на обучение по промокоду Hi-news (действует до 15.02.2020). Набор совсем скоро закончится, поэтому времени на раздумья не так много.
Обучение нейронной сети
Обучение нейронной сети– это процесс, в котором параметры нейронной сети настраиваются посредством моделирования среды, в которую эта сеть встроена. Тип обучения определяется способом подстройки параметров. Различают алгоритмы обучения с учителем и без учителя.
Процесс обучения с учителем представляет собой предъявление сети выборки обучающих примеров. Каждый образец подается на входы сети, затем проходит обработку внутри структуры НС, вычисляется выходной сигнал сети, который сравнивается с соответствующим значением целевого вектора, представляющего собой требуемый выход сети.
Для того, чтобы нейронная сети была способна выполнить поставленную задачу, ее необходимо обучить (см. рис. 1). Различают алгоритмы обучения с учителем и без учителя.
Процесс обучения с учителем представляет собой предъявление сети выборки обучающих примеров. Каждый образец подается на входы сети, затем проходит обработку внутри структуры НС, вычисляется выходной сигнал сети, который сравнивается с соответствующим значением целевого вектора, представляющего собой требуемый выход сети. Затем по определенному правилу вычисляется ошибка, и происходит изменение весовых коэффициентов связей внутри сети в зависимости от выбранного алгоритма. Векторы обучающего множества предъявляются последовательно, вычисляются ошибки и веса подстраиваются для каждого вектора до тех пор, пока ошибка по всему обучающему массиву не достигнет приемлемо низкого уровня.
Рис. 1. Иллюстрация процесса обучения НС
При обучении без учителя обучающее множество состоит лишь из входных векторов. Обучающий алгоритм подстраивает веса сети так, чтобы получались согласованные выходные векторы, т.е. чтобы предъявление достаточно близких входных векторов давало одинаковые выходы. Процесс обучения, следовательно, выделяет статистические свойства обучающего множества и группирует сходные векторы в классы. Предъявление на вход вектора из данного класса даст определенный выходной вектор, но до обучения невозможно предсказать, какой выход будет производиться данным классом входных векторов. Следовательно, выходы подобной сети должны трансформироваться в некоторую понятную форму, обусловленную процессом обучения. Это не является серьезной проблемой. Обычно не сложно идентифицировать связь между входом и выходом, установленную сетью.
Для обучения нейронных сетей без учителя применяются сигнальные метод обучения Хебба и Ойа.
Математически процесс обучения можно описать следующим образом. В процессе функционирования нейронная сеть формирует выходной сигнал Y, реализуя некоторую функцию Y = G(X). Если архитектура сети задана, то вид функции G определяется значениями синаптических весов и смещенной сети.
Пусть решением некоторой задачи является функция Y = F(X), заданная параметрами входных-выходных данных (X 1 , Y 1 ), (X 2 , Y 2 ), …, (X N , Y N ), для которых Y k = F(X k ) (k = 1, 2, …, N).
Обучение состоит в поиске (синтезе) функции G, близкой к F в смысле некторой функции ошибки E. (см. рис. 1.8).
Если выбрано множество обучающих примеров – пар (X N , Y N ) (где k = 1, 2, …, N) и способ вычисления функции ошибки E, то обучение нейронной сети превращается в задачу многомерной оптимизации, имеющую очень большую размерность, при этом, поскольку функция E может иметь произвольный вид обучение в общем случае – многоэкстремальная невыпуклая задача оптимизации.
Для решения этой задачи могут использоваться следующие (итерационные) алгоритмы:
алгоритмы локальной оптимизации с вычислением частных производных первого порядка:
градиентный алгоритм (метод наискорейшего спуска),
методы с одномерной и двумерной оптимизацией целевой функции в направлении антиградиента,
метод сопряженных градиентов,
методы, учитывающие направление антиградиента на нескольких шагах алгоритма;
алгоритмы локальной оптимизации с вычислением частных производных первого и второго порядка:
методы оптимизации с разреженными матрицами Гессе,
метод Левенберга-Марквардта и др.;
стохастические алгоритмы оптимизации:
поиск в случайном направлении,
метод Монте-Карло (численный метод статистических испытаний);
алгоритмы глобальной оптимизации (задачи глобальной оптимизации решаются с помощью перебора значений переменных, от которых зависит целевая функция).
Видео: как обучается нейронная сеть.
Инфополе конечно сейчас завалено постами и упоминаниями нейронных сетей. И в эту же тему мне попался интересный ролик, который очень просто и наглядно показывает, как именно компьютерная программа обучается. Людям далеким от темы, будет тоже интересно посмотреть.
Цель: Заставить программу проехать автомобилем, по гоночной трассе, не врезаясь, с оптимальной скоростью и поворотами.
Метод: Генерируются автомобили в количестве 650 штук. Из этого количества отбираются лидеры, которые маркируются и становятся родителями следующей генерации. Дети следующей генерации получают мутации и “ДНК” родителя. Циклы повторяются, до тех пор, пока программа не научится проходить трассу без ошибок.
Генетический алгоритм – далеко не самый совершенный метод обучения. Хотя и самый легкий для понимания.
О, это генетические алгоритмы, если я не ошибаюсь.
Ну так исправьте заголовок поста, при чем тут нейросети?)
вероятно машинкой управляет нейросеть, которая принимает на вход параметры расстояния до стен а на выходе выдаёт состояние кнопок управления
@sorovoz , советую посмотреть канал Code Bullet на ютубе, если не пугает английский. Довольно интересно и весело.
Такое ощущение, что когда машина тормозит около стены, то алгоритм её намеренно тормозит, на рисунке по линии е. То есть, когда расстояние до стены короткое, то вес линии по е увеличивается в пропорционально и тачка начинает тормозить как единственное решение, потому что алгоритм не знает что можно повернуть по направлению от стены и ехать быстрее. Или алгоритм не знает что если ехать вдоль стены то тогда это не так критично как встретится со стеной в лоб. Возможно надо по другому оценивать расстояние до стен. Или взвешивать по-другому. Брать во внимание под каким углом линия лежит по отношению к стене. Или давать алгоритму возможность выруливать так, чтобы уменьшать “вес” оценки расстояния до стен. Или сделать такое правило что для конкретной задачи не критично ехать вдоль стены даже если расстояние до нее минимальное.
Хотя в конце они конечно классно едут.
5 ссылок на подобные генетические игры)
ссылка не открывается.
Генетические алгоритмы не имеют отношения к нейронным сетям
Хотя на текущий момент backpropagation наше все.
И что здесь не так? Вижу ссылку на статью, в которой показывают, что для некоторой специфической задачи генетический алгоритм показывает результат, сравнимый с нейронкой. Алгоритмом машинного обучения он, безусловно, является, но нейронкой от этого не становится. Нейронные сети – весьма конкретный класс моделей, используемых в машинном обучении. А так есть еще куча всего – SVM, random forest, байесовские модели и т.д. А генетические алгоритмы часто рассматривают совместно с муравьиным алгоритмом и алгоритмом имитации отжига.
Спасибо за экскурс в типы моделей. Но генетический алгоритм это не модель, это метод оптимизации. Которым в том числе можно оптимизировать параметры нейронок.
Ну да. Две совершенно не связанные между собой модели
Не совсем понял ответ. При чем тут вообще модели. Генетика – один из методов неградиентной оптимизации. Нейронной сетью сейчас вообще называют почти любой вычислительный граф, у которого есть параметры. Обучают ли нейронки с помощью генетики? Вообще да.
Просто название поста не соответствует контенту. Обучение нейронной сети и обучение генетического алгоритма – принципиально разные процессы.
Генетический алгоритм не может обучаться. Это один из методов оптимизации (обучения), которым можно подбирать параметры моделей, в том числе нейронных сетей.
Это уже вопрос терминологии 🙂
Нейронные сети в процессе обучения также решают задачу многопараметрической нелинейной оптимизации, минимизируя функцию ошибки для обучающей выборки.
Про подбор параметров нейронной сети при помощи генетических алгоритмов никогда не слышал, но в каких-нибудь экзотических обстоятельствах это, наверное, может иметь смысл.
Не могли бы Вы подкинуть ссылок с примерами, где это делается? Желательно, на научные статьи с уважаемых конференций или крупные индустриальные проекты.
В самом начале указал Git репу с одним из проектов для RL и ссылками на статьи. Там оптимизируется именно нейрока, обзор статьи здесь: https://towardsdatascience.com/deep-neuroevolution-genetic-a. . Статья: https://arxiv.org/abs/1712.06567 .
Прикольно, спасибо. Не видел такого раньше, буду знать.
Источники:
https://hi-news.ru/technology/kak-obuchit-svoyu-pervuyu-nejroset.html
https://neuronus.com/theory/nn/238-obucheniya-nejronnoi-seti.html
https://pikabu.ru/story/video_kak_obuchaetsya_neyronnaya_set_6747149