Есть модные слова: искусственный интеллект (ИИ), машинное обучение и нейросети. Разберёмся, что есть что и зачем оно нужно.
Чем не угодили обычные алгоритмы
С момента создания первых компьютеров люди давали им инструкции: делай то-то, в таком-то порядке. Порядок и описание действий называется алгоритмом. Все программы, которые вас окружают, работают на базе алгоритмов. Там всё чётко: «Если нажата такая кнопка, сделай вот это».
Проблема алгоритмов в том, что они совершенно беспомощны за пределами своих инструкций. Компьютеры не умеют ориентироваться по ситуации. Если в алгоритме что-то не прописано, компьютер этого не сделает, даже если от этого зависит его жизнь. Если бы компьютеры умели ориентироваться в нестандартных ситуациях, мы бы никогда не видели ошибок и «синих экранов смерти».
Например, вы сказали роботу «Перед переходом улицы посмотри сначала налево, а потом направо, и если машин нет, то переходи дорогу». Робот подошёл к переходу. Он посмотрел налево, увидел там асфальтоукладчик. Асфальтоукладчик — это не машина, поэтому робот переходит дорогу, его вкатывает в асфальт. А что? Такой алгоритм.
Чтобы роботы вели себя немного умнее, им пишут сложные алгоритмы. Но проблема остаётся: всё, что в алгоритм не попало, никогда не будет исполнено. И разработчики уже много десятилетий мечтают научить машины думать более самостоятельно. Для этого придумали много чего, в том числе — нейросети.
Что такое нейросети
Есть много мифов о нейросетях: будто это компьютерный разум, самообучающаяся система, мыслящая программа и так далее. Всё это не так.
На самом деле нейросеть — это просто очень сложная база данных с кучей формул. Данные поступают с одного конца базы данных, обрабатываются через кучу формул и выдаются с другого конца. Никаких мыслей там нет — просто математика. Сложность в том, чтобы вывести те формулы, благодаря которым нейросеть даёт хоть сколько-нибудь полезный результат. Выведение этих формул — и есть машинное обучение. У нас будет отдельная статья о том, как это всё устроено.
Вот самое простое отображение структуры нейросети. Слева ячейки ввода данных, справа ячейки вывода данных, а между ними — какой-то скрытый слой, в котором нейросеть совершает свои математические вычисления. Пока что это может быть непонятно, но мы еще расскажем об этом отдельно.
Чем нейросети отличаются от алгоритмов
В алгоритмах разработчики сразу прописывают правильную последовательность действий, которые дают какой-то предсказуемый результат. Например, разработчик пишет программу для расчета площади квартиры по чертежу, и там пошагово описаны все действия: умножь, сложи, вычти и т. д. Если посмотреть на этот алгоритм, будет понятно его устройство, в него можно внести изменения.
Нейросетям вместо алгоритмов дают много заранее правильно решенных задач. Например, десять тысяч планов квартир с уже прописанными площадями. И нейросеть начинает угадывать, какой результат от нее ожидают. Отдельный алгоритм говорит ей, правильно она угадала или нет, и со временем она учится угадывать всё более правильно.
По ходу обучения у нейросети формируются связи, которые позволяют ей угадывать полезный результат. Какие это связи, никто не понимает — мы можем их пронаблюдать, но не всегда можем понять принцип, по которым они формируются.
Короче: алгоритм делает то, что ему сказано, и дает четкий предсказуемый результат. Нейросеть угадывает, что мы от нее хотим, по непонятному нам принципу. При этом, если сеть достаточно хорошо обучена, ее угадывания могут быть достаточно точными.
Что нужно понимать о нейросетях
Нейросети в современном виде — это машины по обработке чисел. Нейросеть не понимает, что смотрит на картинку или водит машинку, — она лишь видит числа на входе и выдаёт числа на выходе. Она даже не знает, что у её чисел на выходе для нас есть какое-то значение.
Например, в этом видео нейросеть получает семь чисел на входе (это расстояния до препятствий и направление движения) и выдает два числа на выходе — поворот руля и газ-тормоз. И уже симулятор гоночной игры превращает эти числа в движение машинки. Нейронка просто обрабатывает числа:
Нейросеть всё еще не умеет импровизировать. Она может действовать в ситуации некоторой непредсказуемости, но генерировать оригинальные решения — нет.
Нейросеть можно запустить на любом компьютере, особое железо не нужно. Это просто алгоритм и данные. Их можно скопировать, заархивировать и выложить в интернет.
При этом есть и специальное железо — нейронные процессоры или, по-другому, ИИ-ускорители. Это те же микропроцессоры, но соединённые таким образом, чтобы быстрее обсчитывать именно нейронки. Но они нужны только для скорости, так-то принципиально нейронку можно рассчитать и на обычном процессоре.
На нынешнем витке развития нейросети способны лишь воспроизводить то, чему их научили. Свободное творчество с чистого листа пока не изобрели.
Где используется ИИ
Вокруг нас уже много устройств и сервисов, внутри которых есть ИИ в том или ином виде.
Голосовые помощники в телефонах и колонках распознают речь и команды, чтобы показать нам лучший маршрут, результат поиска или зачитать прогноз погоды. Та же «Алиса» распознаёт речь, анализирует её, определяет тематику диалога, выделяет полезную для поиска информацию и синтезирует ответы помощника — и во всём ей помогают заранее натренированные нейросети. Подробнее про устройство «Алисы» читайте на Хабре.
Чат-боты на сайтах понимают типовые вопросы, даже если они сформулированы по-разному, и отвечают на них. Это позволяет нанимать меньше людей в техподдержку. Они отличаются от примитивных ботов «Оставь-свой-номер-и-мы-перезвоним» тем, что распознают текст вопроса и сами находят на него ответ в своей базе знаний. Чаще всего внутри таких ботов крутится TensorFlow — система машинного обучения от Google с открытыми исходниками. Хотите собрать такого бота самостоятельно — держите инструкцию.
Умные фильтры в фотокамерах сами определяют, когда вы снимаете против солнца, и добавляют яркости в тенях, чтобы картинка получилась сбалансированной. Если делаете селфи — камера понимает, что на фото будет лицо и делает его ещё красивее: убирает прыщики, морщинки и торчащие волоски. В последних моделях телефонов Honor за это отвечает отдельный модуль в процессоре — Neural Network Processing Unit: NPU. Он управляет простой нейронкой, но даже её хватает для того, чтобы делать классные фотки.
Вариантов реализации ИИ много, но их все можно разделить на две группы — решение узких задач и полноценный искусственный интеллект общего назначения.
ИИ общего назначения
А вот здесь всё не так здорово, как в решении прикладных задач. Дело в том, что научить компьютер мыслить как человек пока невозможно. Каждая область мышления — отдельная программа, которая должна уметь работать со всеми остальными программами. Реализовать такую масштабную систему пока невозможно — нет ни алгоритмов, ни вычислительной мощности для этого, плюс не на чем обучать.
Есть имитации искусственного интеллекта в относительно широких областях, но полноценно мыслить как люди они не могут. Например, разработка компании IBM — ИИ Watson — может строить логические связи между множеством фактов и делать правильные выводы на их основе. Одно из применений Ватсона — постановка диагнозов в медицине. Ещё он круто играет в «Jeopardy!» — аналог «Своей игры» на американском ТВ.
Но даже Ватсон не может одновременно распознавать лица, писать актуальный и осмысленный текст, поддерживать полноценный диалог и принимать решения, поехать ли в выходные на шашлыки или провести время с детьми. Возможно, ситуация изменится с выходом полноценных квантовых компьютеров, но до этого пока ещё очень далеко.
Плюс, есть чисто философская проблема: люди пока что не поняли до конца, что такое сознание, что его определяет, что такое разум и интеллект. Что, если наш мозг — тоже лишь нейросеть, которая видит информацию на входе и выдаёт действия на выходе? А всё, что мы считаем сознанием, — лишь внутренний шум от работы нейронов?
Но философию оставим философам. В одной из следующих статей покажем, как по нейронкам бегут сигналы, и детально разберём суть машинного обучения.