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

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

Говорят, что лучший способ чему-то научиться — попытаться это объяснить, поэтому в личном упражнении я попытаюсь выполнить ELI5 (Eобъяснить как, 5) версия нейронной сети.

Давайте начнем с небольшой истории, люди уже некоторое время возятся с идеей разумной машины, некоторые даже говорят, что идея искусственного интеллекта была задумана древними греками (источник), и было несколько попыток придумать «умные машины были созданы на протяжении всей истории, примечательной из них была Аналитическая машина, созданная Чарльзом Бэббиджем в 1837 году:

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

Для иллюстрации предположим, что мозг комнатной мухи — это персептрон, его входными данными являются любые значения, производимые несколькими клетками в ее глазах, когда глазная клетка обнаруживает «что-то», ее выход будет равен 1, а если нет ничего a 0. Затем комбинация всех этих входных данных может быть обработана персептроном (мозгом мухи), и на выходе получается простое значение 0 или 1. Если это 1, то мозг говорит мухе бежать, а если это 0, это означает, что ей безопасно оставаться на месте.

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

Персептрон — это просто математическая операция, которая умножает определенные входные значения на заранее заданные «параметры» (называемые весами) и суммирует полученные умножения для получения значения.

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

Эта идея настолько сильна, что даже сегодня она является одним из основных строительных блоков того, что мы называем ИИ.

Исходя из этого, я попытаюсь объяснить, как эта простая концепция может иметь такие разнообразные приложения, как обработка естественного языка (вспомните Alexa), распознавание изображений, например, медицинский диагноз на основе сканирования CTR, автономные транспортные средства и т. д.

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

Нейронная сеть имеет разные компоненты, в своей базовой форме она имеет:

Вход

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

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

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

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

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

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

Количество слоев, их тип и количество нейронов в каждом — это то, что мы называем топологией сети (включая количество входов и выходов).

Вывод

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

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

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

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

Такие вещи, как Alexa, немного сложнее, но работают по тем же принципам. Давайте разберем, например, случай с просьбой «Алексе» воспроизвести песню в Spotify. Для этого Alexa использует несколько разных нейронных сетей:

1. Распознавание речи

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

2. Понимание того, что мы имеем в виду (понимание естественного языка)

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

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

3. Ответ нам

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

Хотя это кажется довольно сложным, процесс понимания нас ИИ можно свести к простым математическим операциям.

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

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

Первоначально опубликовано на https://the-mvm.github.io 2 апреля 2021 г.