Учусь сам и учу нейронку

в 13:49, , рубрики: chatgpt, deepseek, ии чат-бот, ии-ассистент, нейронные сети

Введение: Я, нейронка и немного магии  

Пост не о том, как я хакнул какую-то из строгих цензурированных моделей, придумав невероятный промпт, и сейчас нет никаких проблем с генерацией любых картинок, даже самых неприличных. И не о том, как на ПК с 12 гБ оперативки запустил маленькую модель, но натренировал ее так, что она бьет в тестах монстров вроде Gemini или о3, а также, страшно и произносить такую ересь, побеждает всемогущую модель DeepSeek. И теперь считает без ошибки буквы r в слове strawberry.

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

Пост может быть интересен тем, кто, как и я, не особо понимает, что и как работает под капотом нейронки, в этом таинственном, волшебном черном ящике. Выбор слов «не особо понимает» – осознанный: кое-какое представление все же нужно иметь заранее. Например, знать, что такое «модель», «параметры», «веса» и «токен», как «модель» с этими «токенами» взаимодействует. И причем здесь «веса». Не «весы» и не «Весы», хотя иногда, общаясь с ИИ, испытываю эмоции, подобные тем, что возникают при чтении гороскопа, ничего не понятно, но захватывающе интересно.

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

Теория на пальцах: Как работает этот черный ящик?  

Совсем чуть-чуть теории, как я ее понимаю, о том, как работает ИИ (модель, в данном случае – это GPT4.5 aka ChatGPT от OpenAI):

  1. Сырье, звуковой файл с моим несравненным голосом, на первом этапе переводится в транскрипцию вне модели. Качество этой транскрипции – так себе.

  2. Транскрибированный текст соединяется с введенным мной тестовым промптом, со служебной информацией и командами и токенизируется: слова, цифры, пробелы и знаки препинания сначала разбиваются на куски, а затем переводятся в цифровые коды.

Слова, ставшие "токенами"

Слова, ставшие "токенами"
И токены, ставшие "ID"
И токены, ставшие "ID"

3. Далее полученная последовательность чисел (токенов) попадает в волшебный черный ящик – нейронную сеть, где магически преображается, перерабатывается и на выходе получается нечто совершенное. В данном случае – моя гениальная мысль в виде текста.

Не обращайте особого внимание на игривый тон: так я пытаюсь замаскировать свою неграмотность.

“Перерабатывается” — это когда модель смотрит на свою память. Память — это миллиарды параметров, или “веса”. И с их помощью она угадывает: “Какой токен, скорее всего, идет следующим?” Например, после слова “привет” она может предложить “друг”. В нашей придуманной череде последний токен – 558. 

Значения весов (параметров) – продукт обучения модели, процесса небыстрого и дорого, они зашиты в модель и я, пользователь, на них никак повлиять не могу. Эту суровую истину я усвоил и огорчался, мне казалось, что повлиять на качество распознавания моего голоса (красивого и музыкального) нельзя ибо это качество – производная от качества обучения конкретной модели, а откуда ей знать мой голос?

Голос в текст: Моя эпопея с транскрипцией

Но опыт ежедневного сотрудничества с ChatGPT явно указывал на обратное: качество распознавания, к моему приятному удивлению,  с каждым днем улучшалось и улучшается. Мне очень захотелось разобраться в причинах. Странно, но разбираться в причинах, почему гороскопы с прожитыми годами тоже становятся все лучше и лучше, мне не хочется.

Посмотрел пару видео Андрея Карпаты на YouTube — и до меня дошло. Модель угадывает следующий токен не только по своей памяти (весам), но и по тому, что я ей скормил. Чем больше она видит моих текстов, тем лучше понимает, что я хочу сказать.

“Тоже мне открытие” – скажете вы. И будете правы! Я, конечно же, знал это и раньше, но почему-то забыл, что набор токенов, который модель получает в качестве сырья, по мере продолжающегося ее общения с пользователем постоянно растет. И при определенных обстоятельствах увеличение размера улучшает качество ответов. Оговорюсь – не всегда.

Числа и токены: Считаем на коленке  

Моих надиктованных ценнейших мыслей в совершенные тексты, сокровища знаний.

Для начала несколько скучных чисел.

Размер контекстного окна в ChatGPT – 128.000 токенов. Это максимальный размер набора токенов, получаемых моделью на вход, и сюда засчитывается и то, что скормит ей пользователь, и то, что ответит и добавит сама нейронка, включая скрытые служебные токены.

Обычно за «сессию» (назовем это так) я надиктовываю 4-5 минут.

Минута аудиозаписи – примерно 200-300 токенов. Точной информации я не нашел, определено экспериментальным путем: через OpenAI API отправил в Whisper файл .m4a с трехминутной надиктованной записью, затем полученный текст забросил в Tokenizer и увидел, что это – 720 токенов (240 токенов минута).

4-5 минут аудиозаписи (после расшифровки – 400-600 слов, 2500-4000 символов) легким движением руки превращаются в 1000-1500 токенов.

Немного арифметики и узнаем, что одна сессия общения, включая ответ от модели, обходится в 2000-3000 токенов: в затраты добавим и то, что вернула модель. Не будем жадничать и заложим в бюджет 3000.

Еще одно вычисление на уровне начальной школы: размер контекстного окна 128.000 делим на 3.000 токенов в одной сессии, получаем 40 с хвостиком сессий, способных поместиться в одно контекстное окно или же 130-160 минут голосовых (моих) заметок и их расшифровок, содержащих (см. выше про сокровища).

Редактируем и учим: Как я подружился с моделью  

У мобильного приложения ChatGPT при работе с расшифровкой аудиозаписи есть возможность отредактировать черновик того, что модель распознала. 

Окно приложения ChatGPT под Android

Окно приложения ChatGPT под Android

А это позволяет скармливать модели не сырой вариант транскрипции от непонятливого Whisper, а уже редактированный вариант. В свою очередь, это значит – и здесь очень громко звучат фанфары: с каждой новой сессией общения в оперативную память модели попадает все больше данных, помогающей ей решить, какой же токен должен быть следующим в последовательности, теперь свои предсказания (галлюцинации) нейронка может выдавать с учетом уже виденных сырых текстов и моих правок.

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

Выводы с оговорками: Ошибки есть, но я старался

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

Мои дежурные оговорки:

Текст напичкан англицизмами и тяжеловесными фразами из канцелярита – для вашего удовольствия, наслаждайтесь.

Читайте с добрым юмором (я старался писать так же).

Критика приветствуется (скрипя зубами), а детальные пояснения, подсказки и правки приму с искренней благодарностью.

Если материал был полезен, не стесняйтесь его лайкнуть.

Автор: Gonchar_POTT

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js