Все в технологическом сообществе слышали последние новости о том, что AlphaGo победил профессионального игрока в го Ли Седола. Впервые компьютерной программе удалось обыграть профессионального игрока в го.

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

Здесь на помощь приходит искусственные нейронные сети. AlphaGo было бы сложно победить Ли Седола, если бы она не была основана на искусственных нейронных сетях (ИНС).

Что такое ИНС?

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

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

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

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

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

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

Пример из реальной жизни

Представим, что мы хотим предсказывать погоду. Погода зависит от сотен различных параметров (ветер, влажность, давление и т. Д.).

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

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

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

Структура ИНС

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

Сеть учится, изменяя эти веса.

Давайте подробнее рассмотрим нейрон в ИНС.

Нейрон принимает набор входных данных (x1, x2… xn), и каждый вход затем умножается на его соответствующий вес (w1, w2… wn). Эти взвешенные входные данные суммируются, и получается чистый результат. Эта сеть позже проходит через функцию активации (функция активации может варьироваться в зависимости от ИНС, которую нужно построить) , который дает выходной сигнал этого конкретного нейрона.

На рисунке показано, как ИНС выглядит на более высоком уровне.

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

Связи между слоями - это упомянутые выше синапсы. Изменяя веса в этих синапсах, сеть может обучаться.

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

Это аналог пластичности мозга у животных!

Глубокое обучение

Идея Deep Learning состоит в том, чтобы иметь несколько уровней обработки. Один из методов глубокого обучения - создать искусственную нейронную сеть с несколькими скрытыми слоями.

На рисунке показана глубокая нейронная сеть с 3 скрытыми слоями.

Скрытый слой 1 будет принимать решения на основе значений из входного слоя.

Скрытый слой 2 примет решение на основе результатов из скрытого слоя 1. Из-за этого скрытый уровень 2 будет работают на более высоком и абстрактном уровне по сравнению с скрытым слоем 1.

Скрытый уровень 3 примет решение на основе результатов из скрытого уровня 2, работающего на еще более высоком и более абстрактном уровне.

Пример из реальной жизни

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

Представим, что мы создаем программу распознавания лиц.

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

Имея 4 скрытых слоя, мы можем разделить проблему на более мелкие части.

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

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

Скрытый слой 3 будет собирать информацию о краях и простых формах и определять сложные формы и объекты.

Наконец, скрытый слой 4 получит эту информацию и узнает, какие из этих форм и объектов на самом деле определяют человеческое лицо.

AlphaGo и глубокое обучение

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

Заключение

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