Если вы пробовали объяснить родственникам, что такое нейросеть, то наверняка упирались в странную вещь. Человек уже пользуется переводчиком, разблокирует телефон лицом, иногда даже просит ChatGPT написать жалобу в управляющую компанию. Но как это работает — «ну, там искусственный интеллект». После слов про нейроны и математические модели понятнее обычно не становится.
А ведь начать можно проще. Нейросеть — это программа, которую обучают на примерах, подстраивая её внутренние параметры. Не расписывают вручную все варианты кошачьих ушей и все способы предложить кредит в спам-письме, а дают данные и добиваются, чтобы программа лучше справлялась с задачей.
И нет, слово «нейро» не означает, что внутри компьютера завёлся маленький человек. С него как раз и начинаются лишние ожидания.
Стажёр, которому показали, как надо
Представим, что вы наняли стажёра разбирать почту. Можно выдать ему инструкцию: есть слово «выигрыш» — удаляй, есть «договор» — оставляй. До первого письма «Выигрыш по договору страхования». Дальше придётся дописывать исключения, потом исключения из исключений, и однажды инструкция станет длиннее самой переписки.
Другой подход — посадить его рядом и показывать настоящие письма. Это реклама, это от поставщика, а вот здесь мошенники притворяются бухгалтерией. Ошибся — поправили. Постепенно стажёр начинает замечать сочетания признаков: кто отправитель, как написано письмо, куда ведёт ссылка. Даже если конкретного письма раньше не видел.
Вот это уже похоже на обучение нейросети. Она выдаёт результат, алгоритм оценивает ошибку и меняет настройки, чтобы в следующий раз результат был ближе к нужному. И так много раз. Только вместо нескольких десятков писем могут быть миллионы примеров.
Но есть подвох. Допустим, весь спам в учебных данных был с восклицательными знаками. Сеть может зацепиться за них и отправить в мусор вполне нужное «Ваш заказ готов!». Формально закономерность нашла. Только не ту, которую мы хотели.
Поэтому «мы дали ей много данных» ещё не значит «мы хорошо её обучили». Стажёр хотя бы может переспросить, что за странное письмо пришло. От программы такого здравого смысла по умолчанию ждать не стоит.
Пульт, на котором слишком много ручек
Со стажёром разобрались, но что именно меняется внутри программы? Представьте звукорежиссёрский пульт. Подкрутил один регулятор — голос стал громче, другой — убрал лишний бас. Теперь представьте, что регуляторов миллиарды, а результат зависит от того, как они настроены вместе.
У нейросети такие «ручки» — числа, их называют весами. Во время обучения алгоритм понемногу меняет их значения. Никто не сидит перед этим пультом вручную, пытаясь настроить знание русского языка.
Отдельной кнопки «перестать врать» там тоже нет.
И это объясняет, почему исправить нейросеть сложнее, чем поправить запись в базе. Знания и навыки распределены между множеством параметров, причём одни и те же параметры могут участвовать в разных задачах. Изменил поведение в одном месте — задел другое. Так что просьба «ну просто уберите у неё ошибки» звучит примерно как «сделайте хороший звук», только пульт размером с дата-центр.
После обучения веса обычно не меняются при каждом вашем сообщении. Если вы объяснили чату, что кота зовут Борис, он учитывает это в текущей переписке. Но не обязательно навсегда выучил нового кота. История разговора, память сервиса и обучение самой модели — разные вещи, хотя в интерфейсе всё выглядит как один разговор.
Конвейер: от пятен к собаке
Сами вычисления тоже происходят не разом. Тут подходит обычный производственный конвейер: на одном участке обработали заготовку, передали дальше, там сделали следующую операцию. В нейросети такими участками служат слои.
На распознавании изображений это проще всего представить. В некоторых сетях первые слои выделяют края, линии, цветовые переходы. Следующие работают с их сочетаниями, более сложными деталями. И уже из набора признаков получается ответ: скорее всего, на фотографии собака. Не потому, что программист написал «увидишь нос и два уха — говори, что собака». Полезные признаки сеть научилась выделять на примерах.
Конечно, это упрощение, у разных моделей устройство отличается. Но главное тут — каждый следующий этап работает с результатом предыдущего. Поэтому нейросети не обязательно иметь в памяти именно вашу собаку, снятую именно на вашем диване. Она может распознать животное на новом снимке.
А вот написать под фотографией «Борис опять занял диван» — уже другая задача. Тут одного распознавания мало, нужно ещё построить текст.
Автодополнение, которое зашло далеко
Помните подсказки в клавиатуре? Пишете «буду через», телефон предлагает «пять минут». Языковая модель тоже предсказывает продолжение, только учитывает гораздо больше текста и связей внутри него. Получила запрос, выбрала следующий фрагмент, потом ещё один — уже с учётом того, что написала. Такие фрагменты называют токенами, они могут быть словами или частями слов.
Звучит несерьёзно. Столько видеокарт, столько денег — и всё ради следующего кусочка текста?
Но чтобы хорошо продолжать самые разные тексты, мало запомнить, какое слово обычно идёт после «доброе». Приходится усваивать грамматику, связи между понятиями, способы решения задач. Из такого обучения вырастают перевод, написание кода, умение сопоставить два документа. Поэтому фраза «это просто Т9» скорее мешает: принцип подсказывает, а масштаб возможностей сильно занижает.
Зато аналогия хорошо объясняет одну неприятную особенность. Убедительное продолжение не обязательно правдивое. Попросите модель назвать книгу по узкой теме, и она может собрать прекрасную библиографическую запись: настоящий автор, подходящее название, издательство. Всё на месте, кроме книги. Её никто не выпускал.
Это и называют галлюцинацией. Не обязательно потому, что модель решила вас обмануть, — для такого объяснения нам вообще не нужно приписывать ей намерения. Она выдала текст, который выглядит как подходящий ответ. Проверка существования книги — отдельная работа, например через поиск или библиотечный каталог.
И кстати, если чат действительно нашёл книгу в интернете, это не означает, что все нейросети постоянно подключены к поиску. В таком сервисе к модели добавили инструмент. Без него она отвечает на основе обучения и переданного контекста.
Карта, на которой «сломалось» рядом с «не работает»
Поиск тоже бывает нейросетевым. Допустим, вы ищете в базе поддержки «не могу войти», а нужная инструкция называется «Восстановление доступа». Обычный поиск по словам может её пропустить. Смысл похожий, буквального совпадения почти нет.
Для такого поиска нейросеть может представить запрос и документы как точки на карте. Только координаты здесь — длинные наборы чисел, а сама карта не помещается на плоскости: направлений у неё гораздо больше двух. Близкие по смыслу тексты при удачном обучении оказываются рядом. «Не могу войти» — возле «восстановления доступа», а не возле инструкции по замене картриджа.
Эти числовые представления называют эмбеддингами. Термин можно забыть, а вот принцип полезен: система ищет не обязательно те же слова, она ищет близкое содержание.
Теперь понятно, как чат может работать с внутренними документами компании, на которых его никто специально не обучал. Сначала отдельная система находит подходящие фрагменты, потом передаёт их модели вместе с вопросом. Та составляет ответ, опираясь на найденное. Не нужно заново обучать всю нейросеть после каждой правки инструкции.
Правда, близкое — ещё не значит нужное. Инструкция для старой версии программы вполне может оказаться рядом с новой, особенно если в них поменялись всего два пункта. Поэтому в рабочем чате стоит смотреть не только на красивый ответ, но и на то, откуда он взялся. Открыл ссылку, проверил дату документа — иногда именно этого не хватает до правильного решения.
ссылка на оригинал статьи https://habr.com/ru/articles/1099520/