Как работают нейросети — объясняю в самой доступной форме
Даже если спросить у нейросети, как она работает, и попросить объяснить это так, чтобы понял даже ребёнок, вы не получите объяснение, понятное даже ребёнку. Так что... человек, пока незаменим. Объясняю, как работает ИИ, на пальцах.
Важно: я буду всё упрощать, сводить к простым и понятным примерам. Такая схема неизбежно приводит к неточностям и даже ошибкам. Но у меня нет задачи сделать вас экспертом или профессором — я хочу дать вам общее понимание всего, что вас окружает.
Начнём с ТОП-3 заблуждений об ИИ:
1. Нейросеть — это сверхразум, в бесконечность раз более умный, чем человек;
2. Нейросеть — это искусственный интеллект, который совсем скоро захватит власть над роботами-пылесосами, умными автомобилями, ядерным вооружением и электро-погрузчиками, после чего уничтожит человечество, как в фильме «Терминатор»;
3. Нейросеть — это нереально сложно и непонятно, обыватель не может понять, как это работает.
Что ж, давайте разберёмся.
КАК РАБОТАЕТ НЕЙРОСЕТЬ?
Представьте себе программу, в которую вы просто загружаете 100 картинок. Часть из них изображает котов (40 картинок), а часть — чемоданы (60 картинок). Каждая картинка имеет название: либо «кот» (если на ней изображён кот), либо «чемодан» (если на ней изображён чемодан).
Задача программы — не смотря на названия файлов, определить, на какой из картинок изображён кот, а на какой — чемодан.
Программа разбивает каждое изображение на тысячи всевозможных признаков: количество пикселей (точек) определённого цвета, наличие вертикальных/горизонтальных линий, количество и размер цветовых пятен, градиентов (плавных переходов из одного цвета в другой). Таких признаков могут быть миллионы, и они могут комбинироваться.
Далее программа даёт оценку «влиянию» каждого признака на решение:
— «Два треугольника — это кот с вероятностью +20% / это чемодан с вероятностью -20%»
— «Два круга — это кот с вероятностью -20% / это чемодан с вероятностью +40%»
— «Есть прямоугольники — это кот с вероятностью -30% / это чемодан с вероятностью +40%»
— «Есть полосы — это кот с вероятностью -30% / это чемодан с вероятностью +20%»
— «Есть прямые линии — это кот с вероятностью +20% / это чемодан с вероятностью -20%»
Первый раз программа ставит оценку каждому признаку наугад, выдавая произвольное число.
Затем программа последовательно проверит каждую картинку и обнаружит присутствующие на ней признаки:
Картинка 1 (кот):
— «Два треугольника — это кот с вероятностью +20%»
— «Два круга — это кот с вероятностью -20%»
— «Есть полосы — это кот с вероятностью -30%»
Итого вероятность что на картинке кот: 20% - 20% - 30% = -30%
Картинка 2 (чемодан):
— «Есть прямоугольники — это чемодан с вероятностью +40%»
— «Есть полосы — это чемодан с вероятностью +20%»
— «Есть прямые линии — это чемодан с вероятностью -20%»
Итого вероятность что на картинке чемодан: 40% + 20% - 20% = 40%
И так далее, пока не проверит все изображения.
Проверив все 100 картинок, программа делает вывод: на картинках 0 чемоданов и 0 котов, потому что ни одна из картинок не получила вероятности больше 50% для "кота" или "чемодана".
Теперь она сравнивает свой вывод с реальностью и «смотрит» на подписи к картинкам: оказывается, что там должно быть 40 котов и 60 чемоданов.
Что делает программа? Начинает изменять оценку (вес) каждого параметра до тех пор, пока не получит правильный ответ: 40 котов и 60 чемоданов. При этом каждый из параметров в итоге получит точную оценку своего влияния на ответ на вопрос «кот или чемодан?».
После обучения, проверка тех же картинок даст другой результат, к примеру:
Картинка 1 (кот):
— «Два треугольника — это кот с вероятностью +50%»
— «Два круга — это кот с вероятностью +20%»
— «Есть полосы — это кот с вероятностью +20%»
Итого вероятность кота: 50% + 20% + 20% = 90%
Картинка 2 (чемодан):
— «Есть прямоугольники — это чемодан с вероятностью +40%»
— «Есть полосы — это чемодан с вероятностью +20%»
— «Есть прямые линии — это чемодан с вероятностью +40%»
Итого вероятность чемодана: 40% + 20% + 40% = 100%
Тут может возникнуть вопрос: зачем параметрам нужны проценты в оценке? Всё просто: для минимизации ошибок. Круглые объекты могут быть как на изображениях с котами (глаза), так и на изображениях с чемоданами (колёса). Обнаружив этот признак и там, и там, нейросеть даст ему оценку (вес) в зависимости от частоты, с которой он *на самом деле* указывает на кота или чемодан: если круги встречаются одинаково часто и у котов, и у чемоданов, ИИ присвоит этому признаку вес около 0%, чтобы он не влиял на оценку. А если квадратная форма почти всегда означает чемодан, она выставит ей +30% или выше для "чемодана".
Понятно, что на примере всего 100 картинок и нескольких параметров ИИ не будет точным. Он почти наверняка будет ошибаться, путая круги глаз с кругами колёс, будет путать полосы на боку чемодана с окрасом полосатого кота. Но чем больше картинок котов и чемоданов мы загрузим, чем больше параметров выявит система и чем дольше она будет *обучаться* решать задачу определения «кот или чемодан», тем точнее она научится отвечать на вопрос. В конечном счёте, она сможет находить чемоданы и котов даже на картинках, где изображены тысячи посторонних объектов.
Это объяснение сильно упрощено. Эксперты непременно захотят уточнить, что сеть комбинирует входные данные (пиксели) через множество слоёв, чтобы в итоге выявить и распознать сложные признаки вроде "круглые пятна (глаза)", "треугольные формы (уши)" и их комбинации, ведущие к решению "кот" или "чемодан". Они укажут, что нейросеть работает сложнее. Но всё это — важные детали, не меняющие сути: общая, понятная концепция выглядит именно так, как я описал. И самое главное — теперь у вас есть базовое представление о том, как устроена нейросеть.
Но мы ведь не раскрыли тему сверхразумности ИИ и опасности скорого захвата им власти на Земле.
Для этого нам нужно понять, как работают текстовые ИИ. Вы удивитесь, но — так же просто, как и описанный выше графический!
Давайте представим, что вы задаёте ИИ вопрос: «Сколько лап у кошки?»
ИИ не анализирует вопрос в человеческом понимании и, более того, он даже не будет искать на него ответ в некой исполинской базе данных, словно в энциклопедии. Работает это примерно так:
В ИИ загружены миллионы текстов: книг, научных статей, блогов, диалогов.
Ваш вопрос состоит из четырёх слов и знака вопроса: «сколько», «лап», «у», «кошки», «?».
Каждое слово (или даже часть слова) имеет уникальный номер (токен) в базе данных ИИ:
1. Сколько — номер 122
2. Лап — номер 2340
3. У — номер 26
4. Кошки — номер 9001
5. ? — номер 100
А слова имеют связи — почти такие же, как признаки в примере с кошками и чемоданами. Но эти связи отражают не формы, цвета и размеры, а вероятность (частоту) появления слов рядом друг с другом в изученных ИИ текстах (тут вспоминаем про написанное мной чуть выше «В ИИ загружены миллионы текстов»). Очень условно:
1. `Сколько` + `Трость` = 420 --> `Сколько` + `Трость` + `Собака` = 280 --> `Сколько` + `Трость` + `бряк` + `?` = 72 (72 — критически низкая вероятность такой связки слов, скорее всего, запрос бессмысленный)
2. `Сколько` + `Лап` = 20030 --> `Сколько` + `Лап` + `У` = 55000 --> `Сколько` + `Лап` + `У` + `Кошки` + `?` = 125000 (125000 — очень высокая вероятность такой связки, значит, наш запрос очень распространённый)
3. `Сколько` + `Чемоданов` = 25222 --> `Сколько` + `Чемоданов` + `Ест` = 8700 --> `Сколько` + `Чемоданов` + `Ест` + `Чайка` + `?` = 1254 (1254 — низкая вероятность связки, это редкий, странный вопрос)
Так как же ИИ генерирует ответ?
Задача ИИ — продолжить последовательность слов/знаков (по умному — токенов, но это не важно), начатую вашим вопросом, так, чтобы получившаяся цепочка имела максимально возможную статистическую вероятность (оценку). Он не «думает», а математически вычисляет наиболее вероятное продолжение:
Вопрос: `Сколько` + `Лап` + `У` + `Кошки` + `?` (Вероятность связки = 125000)
Плохой ответ: `Сколько` + `Лап` + `У` + `Кошки` + `?` + `У` + `Кошки` + `9` + `лап` = 11434 (Низкая общая вероятность)
Худший ответ: `Сколько` + `Лап` + `У` + `Кошки` + `?` + `У` + `Кошки` + `239` + `лап` = 1821 (Очень низкая вероятность)
Неплохой ответ:`Сколько` + `Лап` + `У` + `Кошки` + `?` + `У` + `Кошки` + `4` + `лап` = 192004 (Достаточно высокая вероятность)
Идеальный ответ: `Сколько` + `Лап` + `У` + `Кошки` + `?` + `У` + `Кошки` + `4` + `лапы` = 266333 (Максимально вероятная комбинация!)
Теперь вы знаете, как работает текстовый ИИ: очень похожим на графический ИИ способом, только вместо признаков изображений (цветовые пятна, треугольники, цвета) — вероятности связей слов/знаков (вероятность употребления их вместе). Для точности ответов текстовому ИИ, так же как и графическому, критически важен объём и качество пропущенных через него данных (текстов): больше данных — точнее оценки связей слов/знаков — правдоподобнее ответы.
А теперь взгляните на ТОП-3 заблуждения об ИИ ещё раз:
1. Нейросеть — это сверхразум, в бесконечность раз более умный, чем человек;
2. Нейросеть — это искусственный интеллект, который совсем скоро захватит власть над роботами-пылесосами, умными автомобилями, ядерным вооружением и электро-погрузчиками, после чего уничтожит человечество, как в фильме «Терминатор»;
3. Нейросеть — это нереально сложно и непонятно, обыватель не может понять, как это работает.
Уверен, теперь вы совсем иначе воспринимаете эти тезисы.
ИИ — не сверхразум. Это очень быстрый и эффективный статистический инструмент, который отлично находит и комбинирует уже существующие в его данных слова и знаки в идеальной последовательности.
ИИ — не разумный захватчик. Он прекрасно имитирует разум, потому что выбирает статистически наиболее вероятные (и потому правдоподобные) сочетания слов/фраз (кстати, благодаря этому он ещё и отлично справляется с переводами).
ИИ — понятен в основе. Принцип его работы (статистика на огромных данных) прост для понимания, как вы теперь видите. Основная сложность — в гигантских масштабах: потребности собрать и обработать колоссальное количество данных, вычислить триллионы связей и эффективно это всё хранить и использовать. В этом плане он сложен технически, но не концептуально.