Это первая статья из трёх о том, откуда взялись нейросети. Дальше — о восьмидесяти годах их истории и о том, почему все заговорили о них именно сейчас.
Слово «нейросеть» встречается в новостях, в разговорах коллег, в описаниях программ, которыми вы уже пользуетесь. При этом объяснить, что это такое, без формул и без «как в мозге» получается редко. Попробуем.
Обычная программа работает по правилам
Представьте, что нужно посчитать скидку для клиента. Обычная программа — это набор правил, которые написал человек: «если сумма заказа больше 10 000 рублей — скидка 5%, если больше 50 000 — скидка 10%». Программа выполняет эти правила буквально, шаг за шагом. Если правило не написано — ситуация не обработана.
Это надёжно там, где правила известны заранее и их немного. Но как написать правило, которое отличает письмо клиента с жалобой от письма с вопросом о доставке? Или правило, которое распознаёт рукописную подпись? Формально описать такие задачи почти невозможно — слишком много исключений и оттенков.
Зачем вообще понадобились нейросети
Есть задачи, с которыми человек справляется легко, а вот правило для них не напишешь: узнать знакомое лицо в толпе, разобрать чужой почерк, понять смысл письма, а не просто заметить в нём отдельные слова. Формально объяснить, чем один почерк отличается от другого, или где кончается вежливый вопрос и начинается жалоба, не получается — слишком много вариантов и оттенков.
Нейросети придумали как раз для таких случаев. Сама идея появилась ещё в 1943 году, когда исследователи пытались понять, как мозг производит сложное поведение из сети простых элементов, и предложили для этого расчётную модель. Позже эта идея стала работающим инструментом: например, сеть, обученную в 1989 году, научили читать рукописные почтовые индексы для американской почты, а в 1990-е похожие системы распознавали суммы на банковских чеках. Во всех этих задачах общая мысль одна: вместо того чтобы прописывать правило на каждый случай, компьютеру показывают много примеров — и он сам находит закономерность.
Нейросеть не читает правила — она учится на примерах
Нейросеть решает эти задачи иначе. Ей не пишут правило «жалоба — это когда…». Ей показывают тысячи примеров: вот письмо, оно жалоба; вот письмо, это вопрос о доставке. Постепенно нейросеть сама находит закономерности, по которым один текст похож на жалобу, а другой — нет.
Разница простая, но важная: обычную программу настраивают правилами, нейросеть настраивают примерами. Первая делает то, что ей велели. Вторая делает то, чему её приучили.
Что внутри: нейрон как счётчик с весами
Слово «нейрон» здесь не биологическое, а инженерное — так назвали простую расчётную единицу, когда искали ей название. Внутри нейросети таких единиц может быть очень много, и каждая устроена похоже.
Представьте счётчик, который получает несколько чисел на входе, у каждого числа есть свой «вес» — насколько сильно оно влияет на результат. Счётчик умножает каждое входное число на его вес, складывает всё вместе и сравнивает сумму с порогом: если сумма больше порога — на выходе один ответ, если меньше — другой.
Например, письмо клиента можно превратить в три числа на входе: есть ли слово «верните» (1 или 0), указан ли номер заказа (1 или 0), стоит ли вопросительный знак (1 или 0). У каждого входа свой вес — насколько он важен для вывода «это жалоба»: слово «верните» весит ×0,9, номер заказа — ×0,4, а вопросительный знак — только ×0,1, потому что он одинаково часто встречается и в жалобах, и в обычных вопросах. Счётчик умножает, складывает и сравнивает сумму с порогом — получается ответ: «жалоба» или «не жалоба».
Один такой счётчик — только первый шаг. Его выход становится входом для следующего такого же счётчика, и так — через много слоёв. Если на входе не текст, а картинка, всё начинается с отдельных пикселей: первый слой замечает границы и пятна цвета, следующий складывает из них контуры и фрагменты, и так далее, пока на выходе последнего слоя не появится слово «кошка».
Сама по себе одна такая единица примитивна. Но когда таких счётчиков миллионы, а весов у них — настраиваемых чисел — миллиарды, вся система вместе способна улавливать очень тонкие закономерности. Ни один вес по отдельности ничего не «понимает» — смысл рождается из их совместной настройки.
Обучение — это подкрутка весов после ошибки
Откуда берутся правильные веса? Их не пишет человек — их подбирает сам процесс обучения, и это чем-то похоже на работу со стажёром.
Представьте нового сотрудника, которому не выдали инструкцию, а вместо этого показывают один пример за другим: вот письмо и правильный ответ на него, вот ещё одно. После каждого примера стажёру говорят, насколько его ответ отличался от правильного, и он немного корректирует свою манеру работать. После первого письма — почти наугад. После тысячного — уже гораздо точнее. После миллионов — получается уверенный специалист, который не помнит каждое конкретное письмо, но уловил общую закономерность.
С нейросетью происходит то же самое, только вместо человека веса подкручивает программа, и делает это не миллионы раз, а буквально миллиарды. После каждого примера она сравнивает результат с правильным ответом и чуть-чуть сдвигает веса в сторону меньшей ошибки. Один такой шаг ничего не меняет. Огромное число шагов — меняет всё.
Почему потом непонятно, «как она так решила»
У обычной программы можно открыть код и построчно проследить, почему получился именно такой результат. С нейросетью это не работает. После обучения перед вами — миллиарды подкрученных чисел, распределённых по слоям. Спросить «почему вес номер 4 миллиона 812 тысяч 003 такой, а не другой» бессмысленно: он такой не сам по себе, а в сочетании со всеми остальными.
Это не значит, что нейросеть работает «как чёрная магия» или что её решения нельзя оценивать. Это значит, что оценивать приходится по результату — правильно она ответила или нет, — а не по прослеживаемой цепочке рассуждений, как в обычной программе. Отсюда и привычка проверять то, что выдала модель, а не доверять ей по умолчанию.
Языковая модель — тоже нейросеть, только для текста
Тот же принцип лежит и в основе языковых моделей, с которыми вы, скорее всего, уже работали в почте или чате. Это нейросеть, которую научили на огромном количестве текстов предсказывать следующее слово: получив начало фразы, она вычисляет, какое продолжение статистически наиболее уместно, и так — слово за словом.
Из этого механизма — предсказание, а не вспоминание факта из справочника — вытекает известная особенность таких моделей: они могут уверенно писать неточности, если те выглядят правдоподобно. Мы подробно разбирали это в статье «Почему нейросеть уверенно врёт — и как это ловить».
Чего этот принцип не объясняет
Здесь описан общий механизм — обучение на примерах вместо правил. Он не объясняет, почему конкретная модель ответила именно так в конкретном разговоре: для этого нужно знать, на чём именно её обучали, а это не публикуется. Он не говорит, надёжна ли конкретная программа для вашей задачи, — это отдельный вопрос про данные и проверку. И он не означает, что у нейросети есть понимание в человеческом смысле: она находит статистические закономерности, а не смысл в том значении, в каком его вкладывает человек.
Нейросети не новые: об этом следующая статья — «Нейросетям восемьдесят лет: как всё начиналось».

