#теория
#интересное
#лайфхаки
#мнения
#истории
#подкасты
#спецпроекты
Елизавета Стрючкова
Больше всего любит две вещи: путешествовать и писать тексты. Нередко это получается совмещать: например, писать в дороге или опрашивать для материала людей с другого края материка.
Как нейросети работают с текстами и рисуют: объяснение без формул
12.10.2023
Нейросети стали обыденностью: студенты пишут курсовые с помощью ChatGPT, иллюстраторы рисуют в Midjourney, а Т9 регулярно предлагает неловкие автозамены. Технологиями заинтересовались и корпорации: например, РЖД провели конкурс цифрового искусства. Но что мы знаем о том, как нейросети работают с языком? Как видят слова и изображают их? Спросили у Владимира Морозова — разработчика машинного обучения в отделе обработки естественного языка «‎Яндекса».
Владимир Морозов
Как устроены языковые модели

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

Языковая модель — это большая математическая программа, которая понимает и генерирует текст на естественном языке. Она работает как «чёрный ящик», который позволяет предсказывать следующее слово в последовательности.

Как объясняет разработчик машинного обучения Владимир Морозов, на входе модель получает текст. Например, если пользователь набирает слова на клавиатуре, первой их прочитает именно языковая модель. За распознавание высказывания отвечает энкодер. Чтобы понять смысл, модель делит входной текст на мелкие кусочки, такие как слова или фразы.

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

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

Владимир рассказывает: «Дальнейший процесс зависит от того, какую задачу мы хотим решить: если нейросеть анализирует предложение и должна выдать предложение, то языковая модель обновляет контекст новыми сгенерированными словами и снова предсказывает слово».
Нейросети стали обыденностью: студенты пишут курсовые с помощью ChatGPT, иллюстраторы рисуют в Midjourney, а Т9 регулярно предлагает неловкие автозамены. Технологиями заинтересовались и корпорации: например, РЖД провели конкурс цифрового искусства. Но что мы знаем о том, как нейросети работают с языком? Как видят слова и изображают их? Спросили у Владимира Морозова — разработчика машинного обучения в отделе обработки естественного языка «‎Яндекса».

Как устроены языковые модели

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

Языковая модель — это большая математическая программа, которая понимает и генерирует текст на естественном языке. Она работает как «чёрный ящик», который позволяет предсказывать следующее слово в последовательности.

Как объясняет разработчик машинного обучения Владимир Морозов, на входе модель получает текст. Например, если пользователь набирает слова на клавиатуре, первой их прочитает именно языковая модель. За распознавание высказывания отвечает энкодер. Чтобы понять смысл, модель делит входной текст на мелкие кусочки, такие как слова или фразы.

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

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

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

Модель видит текст как единицы языка: слова, буквы, цифры или знаки препинания — их по-другому называют токенами. Из чего будут состоять токены, зависит от того, как программист, который работает с моделью, поделил текст. Можно анализировать выражения на уровне букв, слов или частей слова.

«Мы разбиваем слова на популярные части, например „велотренажёр“ → „вело“, „трен“, „ажёр“», — рассказывает Владимир Морозов. Такой формат удобен тем, что токены получаются более осмысленными, чем если бы текст делился на буквы, но занимают меньше памяти в сравнении со словарями, которые состоят из слов.

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

Модель видит текст как единицы языка: слова, буквы, цифры или знаки препинания — их по-другому называют токенами. Из чего будут состоять токены, зависит от того, как программист, который работает с моделью, поделил текст. Можно анализировать выражения на уровне букв, слов или частей слова.

«Мы разбиваем слова на популярные части, например „велотренажёр“ → „вело“, „трен“, „ажёр“», — рассказывает Владимир Морозов. Такой формат удобен тем, что токены получаются более осмысленными, чем если бы текст делился на буквы, но занимают меньше памяти в сравнении со словарями, которые состоят из слов.

Воспринимать и выдавать предположения нейросети умеют на разных уровнях. Можно предсказывать слова, а на вход принимать по букве — так работает клавиатура. С каждой новой буквой модель предлагает целое слово, а не следующую букву.
Если вы интересуетесь компьютерной лингвистикой и связью языка с искусственным интеллектом, голосуйте в телеграм-канале «Изборника», мы обещаем к вам прислушаться.
Принципы работы языковой модели зависят от её типа. До того как разработчики стали использовать нейросети, в ходу были более простые статистические алгоритмы. Языковые модели на их основе называют классическими. Простейшая модель такого рода, например, выдаёт одно и то же слово вне зависимости от того, что получает на входе. Более сложные учитывают вероятности. Например, могут подсчитать, что после «привет» люди часто пишут «как дела», а после «хлеб» — «белый». В качестве предсказания модель может предложить самое частотное слово или слово, которое встречается с определённой вероятностью. Логика работы зависит от того, какая стратегия предсказания заложена в модель.

Если модель смотрит на один последний токен, это униграммная модель: она предсказывает следующее слово по последнему во фразе. Биграммные модели смотрят на два слова назад. Но технически количество слов, которые будут учитываться в предсказании, не ограничено. Поэтому модели могут быть n-граммными, где n — любое число. В сравнении с другими модели такого типа быстро работают и мало весят, особенно если значение n небольшое, а токен — буква или часть слова. Поэтому n-граммные модели активно используют в клавиатурах, чтобы персонализировать подсказки.

Более современные модели на основе нейросетей ориентируются на большее количество параметров. В отличие от, например, n-граммных, которые смотрят на фиксированное число слов, они могут смотреть на весь текст целиком. Кроме того, они способны учитывать стиль текста, день недели и даже сезонность — это как раз контекст.
Принципы работы языковой модели зависят от её типа. До того как разработчики стали использовать нейросети, в ходу были более простые статистические алгоритмы. Языковые модели на их основе называют классическими. Простейшая модель такого рода, например, выдаёт одно и то же слово вне зависимости от того, что получает на входе. Более сложные учитывают вероятности. Например, могут подсчитать, что после «привет» люди часто пишут «как дела», а после «хлеб» — «белый». В качестве предсказания модель может предложить самое частотное слово или слово, которое встречается с определённой вероятностью. Логика работы зависит от того, какая стратегия предсказания заложена в модель.

Если модель смотрит на один последний токен, это униграммная модель: она предсказывает следующее слово по последнему во фразе. Биграммные модели смотрят на два слова назад. Но технически количество слов, которые будут учитываться в предсказании, не ограничено. Поэтому модели могут быть n-граммными, где n — любое число. В сравнении с другими модели такого типа быстро работают и мало весят, особенно если значение n небольшое, а токен — буква или часть слова. Поэтому n-граммные модели активно используют в клавиатурах, чтобы персонализировать подсказки.

Более современные модели на основе нейросетей ориентируются на большее количество параметров. В отличие от, например, n-граммных, которые смотрят на фиксированное число слов, они могут смотреть на весь текст целиком. Кроме того, они способны учитывать стиль текста, день недели и даже сезонность — это как раз контекст.
«Летом для начала „пойдём кататься на в…“ продолжение будет „велике“, а зимой — „ватрушке“», — говорит Владимир.
«Летом для начала „пойдём кататься на в…“ продолжение будет „велике“, а зимой — „ватрушке“», — говорит Владимир.
Как математика помогает распознавать слова

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

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

Чтобы нейросеть могла работать со словарём, для каждого слова в нём создаётся уникальный вектор, равный размеру словаря. Эти векторы разреженные, то есть содержат единичное значение только на позиции, которая совпадает с порядковым номером слова в словаре.
Как математика помогает распознавать слова

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

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

Чтобы нейросеть могла работать со словарём, для каждого слова в нём создаётся уникальный вектор, равный размеру словаря. Эти векторы разреженные, то есть содержат единичное значение только на позиции, которая совпадает с порядковым номером слова в словаре.
Правда, такое представление слов неэффективно с точки зрения памяти, поэтому его оптимизируют. Чтобы сократить размер словаря, вводят векторы фиксированной меньшей размерности — эмбеддинги. Чтобы их получить, первоначальные векторы умножают на коэффициенты — весá. Либо они подбираются эмпирически, либо модель самостоятельно выбирает их в процессе обучения в зависимости от того, какая задача перед ней стоит. Эмбеддинги должны отражать семантику и отношения между словами.
Правда, такое представление слов неэффективно с точки зрения памяти, поэтому его оптимизируют. Чтобы сократить размер словаря, вводят векторы фиксированной меньшей размерности — эмбеддинги. Чтобы их получить, первоначальные векторы умножают на коэффициенты — весá. Либо они подбираются эмпирически, либо модель самостоятельно выбирает их в процессе обучения в зависимости от того, какая задача перед ней стоит. Эмбеддинги должны отражать семантику и отношения между словами.
Если изображать эмбеддинги на координатной плоскости, векторы с похожим значением окажутся рядом. Они образуют семантически близкие кластеры.

Как нейросети рисуют


Для распознавания изображений часто применяют свёрточные нейронные сети. Они состоят из нескольких слоёв, первый из которых — свёрточный (поэтому сети и получили такое название).

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

Как нейросети рисуют


Для распознавания изображений часто применяют свёрточные нейронные сети. Они состоят из нескольких слоёв, первый из которых — свёрточный (поэтому сети и получили такое название).

Свёрточный слой последовательно проходится по фрагментам изображения в поисках повторяющихся узоров из чёрточек. Следующие слои также проходятся по изображению, но ищут уже более сложные узоры — геометрические фигуры. Фигуры состоят из чёрточек, которые нашёл первый слой. Чем выше слой, тем более сложные элементы он может распознавать. Постепенно, от слоя к слою, нейросеть распознаёт изображение в целом.
Свёрточные нейронные сети могут распознавать объект с точностью до 99%. Эффективность связана с тем, что внутри сети есть множество параметров, которые она настраивает сама в процессе обучения. Таким образом, нейросеть может распознавать даже те объекты, на которых не обучалась.

Генерировать желаемые изображения с помощью нейросетей можно разными способами, самые популярные — по текстовому описанию или по картинкам-примерам. В первом случае пользователь должен описать, что он хочет видеть, на одном из естественных языков, например русском или английском. Второй способ — «показать» нейросети существующие картинки с тем предметом, который художник хочет изобразить, и ориентир стиля.

По текстовому описанию нейросети также рисуют с помощью энкодера и декодера. Энкодер распознаёт текст, а декодер строит описание. Владимир объясняет: «Декодер как бы раздвигает вширь вектор, который к нему поступает, и создаёт изображение из него».

Вне зависимости от того, как вы предпочитаете творить, мы желаем вам вдохновения. И чтобы вас всегда правильно понимали: и люди, и языковые модели.
Свёрточные нейронные сети могут распознавать объект с точностью до 99%. Эффективность связана с тем, что внутри сети есть множество параметров, которые она настраивает сама в процессе обучения. Таким образом, нейросеть может распознавать даже те объекты, на которых не обучалась.

Генерировать желаемые изображения с помощью нейросетей можно разными способами, самые популярные — по текстовому описанию или по картинкам-примерам. В первом случае пользователь должен описать, что он хочет видеть, на одном из естественных языков, например русском или английском. Второй способ — «показать» нейросети существующие картинки с тем предметом, который художник хочет изобразить, и ориентир стиля.

По текстовому описанию нейросети также рисуют с помощью энкодера и декодера. Энкодер распознаёт текст, а декодер строит описание. Владимир объясняет: «Декодер как бы раздвигает вширь вектор, который к нему поступает, и создаёт изображение из него».

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