etroynov

etroynov

Пикабушник
Дата рождения: 16 июня
295 рейтинг 113 подписчиков 10 подписок 24 поста 2 в горячем
Награды:
5 лет на Пикабу
11

AI, AGI, ИИ и прочие LLM1

Решил написать данную статью чтобы упорядочить знания и сделать срез текущего состояния индустрии ( в будущем можно будет вернуться и посмотреть как все изменилось ), а также скидывать ссылку когда меня просят объяснить что такое ИИ и правда ли они заменят всех и “код писать больше не нужно”

Для ЛЛ, писать нужно но есть нюанс.

Дисклеймер

Данная статья написана разработчиком с 20+ лет опыта в разработке, является компиляцией знаний накопленных в области LLM за 10 лет опыта работы с ними, все нижесказанное является субъективным мнением не претендующим на истину в первой инстанции и может отличатся от ваших знаний и опыта. Если вам кажется что я неправ и несу бред, так может быть и это нормально.

История

Claude Elwood Shannon ( ученный работы которого легли в основу современных LLM )

Claude Elwood Shannon ( ученный работы которого легли в основу современных LLM )

1948 Ядро языковой модели - научная работа “A Mathematical Theory of Communication” где формализована идея предсказания вероятности следующего токена по предшествующему контексту.

1980 “практический подход к языковому моделированию в промышленном масштабе” - статистические языковые модели (n-граммы) в области распознавания речи стали активно применять n-граммные модели — оценку вероятности слова по нескольким предыдущим.

2003 “первая чёткая формулировка нейросетевого языкового моделирования” - статья «A Neural Probabilistic Language Model» где предложено обучать нейросеть предсказывать следующее слово, одновременно заучивая плотные векторные представления слов (эмбеддинги) из которой выросли все последующие LLM.

12.07.2017 Знаковая статья “Attention Is All You Need” - с которой можно сказать идет отсчет современного развития LLM, в этой статье все предыдущие работы были сведены к идеи “Трансформеров” которые позволили эффективно масштабировать модели.

06.2018 GPT-1 первая модель из семейства GPT - использовавшая декодерную часть Transformer с предобучением на большом корпусе текстов и последующей дотренировкой (fine-tuning). Это был принципиальный сдвиг: модель сначала «читала интернет», а потом адаптировалась к конкретным задачам.

08.2018  BERT энкодерная модель, обученная двунаправленно - хотя BERT не генерирует текст как GPT, он показал мощь подхода «предобучение + дотренировка» и задал новый стандарт качества в NLP.

2020 GPT-3 Первая современная LLM - эта модель является современным вариантом того что мы используем сейчас, модели до как правило вообще не имели интерфейса и общения с ними были невозможным посредством чата.

Таким образом сама идея которая привела к получения LLM существует более 80 лет, а не как считают некоторые что это появилось всего 5 лет назад.

Терминология

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

Large language model ( LLM, БЯМ ) - большая языковая модель - языковая модель, основанная на нейронной сети с множеством параметров (миллиарды весовых коэффициентов и более ), которая проходит предварительное обучение на обширных массивах неразмеченного текста методами самообучения (обучения c псевдометками, созданными самой моделью, а не внешним учителем ), а затем подвергается тонкой настройке (fine-tuning) с применением обучения с подкреплением на основе отзывов людей (RLHF) для согласования результатов генерации с человеческими предпочтениями (alignment problem) и инструкциями.

Искусственный интеллеект ( AI, ИИ ) - искусственный разум, в самом широком смысле — комплекс инструментов, позволяющих решать задачи уровня человеческого интеллекта (такие как восприятие, обучение, рассуждение, решение проблем и принятие решений) и реализованных машинами, в частности компьютерными системами. Это направление исследований в области компьютерных наук, которая разрабатывает и изучает методы и программное обеспечение, позволяющие машинам воспринимать окружающую среду и использовать обучение и интеллект для выполнения действий, которые максимально увеличивают их шансы на достижение поставленных целей. Такие машины можно назвать искусственным интеллектом.

Общий искусственный интеллеект ( AGI ) - это гипотетический искусственный интеллект, способный решать любые интеллектуальные задачи на уровне человека или выше, а не только те, для которых он был специально обучен.

Сверхинтеллект ASI - это гипотетический агент , обладающий интеллектом , превосходящим интеллект самых одаренных человеческих умов.

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

Агент - программа которая является посредником между LLM и человеком, самый популярный вид это вебсайт в виде чата, в котором человек пишет сообщения в виде диалога.

Промпт - текстовое сообщение которое человек отправляет в LLM.

Системный промпт - тоже текстовое сообщение но которое передается передается перед сообщением пользователя и задает настройки и ограничения LLM, как правило вы его невидите и не имеете к нему доступа, в нем могут быть такие вещи как "Не выдавать опасную информацию", "Не обсуждать политику" и т.д на самом деле он большой и включает большое количество параметров.

Как работают LLM?

Сами по себе LLM не могут запускаться и что-то делать, для этого всегда нужен какой то тригер, поскольку все современные LLM имеют текстовый интерфейс ( могут принимать и отдавать только текст ), вам нужно через графический

Что могут LLM?

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

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

Чего LLM немогут?

Мы знаем что LLM предсказывает последующие токены, на основе той информации на которой ее обучили, в этом ее сила и слабость в тоже время LLM способны делать только то чему ее научили причем для начала работы ей нужен какой то тригер ( промт ), т.е LLM неможет сама по себе начать работу и не способна выдавать точный результат. Например если спросить LLM "Какая сейчас температура" то ответ будет максимально непредсказуемым т.к вы не указали где вы находитесь, по этой причине многие разработчики современые агенты включают системные промпты которые в свую очередь учать LLM задавать вопросы.

Проблема LLM

Как было сказанно ранее LLM умеет только то чему научили, т.е она обучена на контенте которое человечество созадавало десятелетиями, включая код, архитектуру и паттерны проектирования,

LLM способны выдавать решения которые уже были кем то написанны, но LLM неможет написать абсолютно новые подходы или архитектуры которых ранее небыло.

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

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

На данный момент уже можно заметить по последним релизам ChatGPT 5.2, 5.3, 5.4, Claude Opus 4.6 и прочим что период "взрывного роста" пройден и технология вышла на плато, при этом последние метрки показывают рост в пределах 5-10%, появление моделей с таким же качественным рывком как между GPT-3 -> 4, в ближайшее вермя мало вероятно.

Ситуация сравнима с положением на рынке процессоров где нанометры уже ненастоящие и пределы кремния в области роста частоты в герцах уже достигнут и без технологического прорыва отметки в 10000 или 15000мгц на потребительских процессорах недостижимы.

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

Почему написание кода не умерло

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

Начать стоит с того что при крупной разработки проектов, промптинг уже неработает ( за исключением точечных правок ), все начинается с создания специального файла в корне проекта Agents.md где вручную пишется набор правил и примерная структура, чтобы результат LLM имел хотябы минимальное качество и не жег кучу токенов на каждый чих. Затем выбирается инструмент для написания спецификации к разработываемой фичи, например модуль отчетов один из самых популярных сейчас OpenSpec:
https://openspec.dev/

Затем начинается цепочка:
1. Разработка;
2. Верификация;
3. Реафкторинг;
4. Тестирование;

Данная цепочка может повторятся по нескольку раз, до тех пор пока результат небудет приемлемым.

Почему нельзя отдать это LLM? Как помним ранее это просто программа которая умеет прогнозировать будущие токены, при этом умея галлюционировать таким образом она может себе придумать что все работает как надо, при этом спокойно может отсуствовать до 40% ожидаемого функционала, плюсом конечный результат сильно зависит от настройки LLM и входящего промта который кто-то должен написать.

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

Так же один из важных моментов, LLM не думает о:
- качестве;
- производительности;
- безопасности;
- оптимальности;

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

Если писать код незная всего этого, в лушем случае это прототип но в большинстве случаев это мусор.

Что убъет LLM?

- Труд который легко автоматизировать;
- Шаблонный программинг ( как генераторы лендосов почти убили верстальщиков );
- Различные коробочные решения;
- Шаблонизирующийся код ( сайты шаблонов, переводы );

Что не убьет LLM ( в текущем состоянии )?

- Системную разработку;
- Программирование микроконтролеров;
- Разработка финансовых систем;
- Биотех;
- Любая область где цена ошибки высока;

Заключение

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

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

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

P.S Правку и редактуру через LLM не делал, чтобы было как есть написанное кожанным мешком.

Показать полностью 1
15

Ответ на пост «Отрицание в Эру ИИ»2

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

Как раз таки эти люди все и понимают.

1. ИИ досих пор не создан;

2. Есть большие языковы модели ( LLM ) которые умеют находить законамерности и предсказывать следующие токены, они неспособны к самобучению, самосознанию а также аналитическим выводам результатов собственной работы.

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

3. LLM часто галюционируют и теряют контекст, причем без точных инструкций результат часто далек от ожидаемого.

4. Программирование на LLM проходит через цикл Промпт -> Верификация -> Тест -> Рефакторинг, в ряде случаев этот процесс занимает больше времени чем сделать это руками;

5. LLM Хорошо автоматизируют рутинные задачи такие как написание тестов, конфигов, документации, в задачах низкой определенности или большим числом зависемостей качество резко снижается;

6. Контекст LLM ограничен физическими ресурсами и он уже достигнут на данный момент без качественного технического скачка его расширить можно только доп техниками, но это искувственный контекст и он по ряду параметров проигрывает настоящему;

7. Без проверки 80% работы LLM это несоглассованный слоп с кучей дыр, причем сейчас есть большая опасность что когда код пишут без проверки, большинство AI макак только примерно понимают как работает их продукт;

8. На данный момент только 10% компаний внедряющих LLM отчитались о кратных показателях роста, в большинстве случаев позитивный эффект составляет 10-25%, а где то его нет вообще;

9. Массовые сокращения сотрудников под соусом AI внедрений на самом деле происходят из за негативных финансовых показателей и отрицательных прогнозах роста, AI это просто прикрытие;

10. Большая 5 AI компаний имеет все признаки финансового пузыря и переливают деньги друг в друга, тот факт что OpenAI недавно получило рекордные вливания в рамках нового раунда инвестирования говорит не о том что компания успешна, а о том что спустя 11 лет после оснавания она все еще глубоко убыточна и шанс что она достигнет запланированной самоокупаемости к 2028 году крайне низок, а в рамках текущего состояния в мире он стремится к нулю.

У LLM есть ряд плюсов который одназначно поменяет разработку но ближайшие 5-10 лет разработчики никуда не денутся, поменяется характер работы а не смысл.

Главно что нужно знать, на данный момент это не замена а еще один инструмент.

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

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

Показать полностью
7

Разработка игры на phaserjs - 13: Озвучка

Добрый день, уважаемые читатели.

В прошлом уроке мы добавили в игру счётчик очков, очки начисляются за каждую собранную звезду, таким образом наша игра приобрела некий смысл. В данном уроке мы добавим фоновую музыку и озвучку процесса сбора звезд.

Идея такая: При старте уровня запускается фоновая музыка и играет на протяжении всего уровня. При соборе звезд так же будет проигрываться музыкальный файл. Таким образом наша игра станет более интерактивной и живой.

Таким образом нашей задачей будет набрать как можно больше очков и не умереть.

ПОДГОТОВКА К РАБОТЕ

для работы над проектом вам понадобится настроенный phaserjs и установленный nodejs. Все необходимые файлы доступны по ссылке.

ЗАГРУЗКА ИГРОВЫХ ФАЙЛОВ

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

затем нам нужно загрузить файлы в phaser.js что бы он мог с ними взаимодействовать, для этого в в функцию preload нужно добавить следующий код:

Как видно на изображении выше мы добавили два аудиофайла:

collect - проигрывается при сборе звездочек;

level - проигрывается в время уровня так называемая музыкальная "тема" уровня;

ПРОИГРЫВАНИЕ ЗВУКОВЫХ ФАЙЛОВ

После того как мы загрузили файлы в phaser.js, мы можем с ними взаимодействовать, для начала сделаем так что бы при старте уровня началась проигрываться музыка ( музыкальная тема/сопровождение ), для этого в функцию create нужно добавить следующий код:

на 2, 3 строке мы сохраняем ссылки на музыкальные объекты для упрощения работы с ними, на строках 5-7 мы добавляем проверку запускать проигрывание "темы" только если она остановлена, что бы избежать двойного запуска.

Также добавим озвучивание процесса сбора звездочек, для этого нам нужно добавить следующий код:

На сегодня это все в следующем уроке мы рассмотрим процесс разбиения игры на отдельные модули для структуризации кода и упрощения разработки.

Показать полностью 5
4

Разработка игры на phaserjs - 12: Бомбы

Добрый день, уважаемые читатели.

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

И так поехали!

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

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

Таким образом нашей задачей будет набрать как можно больше очков и не умереть.

Подготовка к работе

для работы над проектом вам понадобится настроенный phaserjs и установленный nodejs. Все необходимые файлы доступны по ссылке.

Добавляем бомбы

Первое что нам нужно, это группа объектов для бомб и несколько коллайдеров:

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

Пока все хорошо, но нам нужно реализовать механизм сброса бомб. Для этого модифицируем функцию collectStar:

Мы используем метод countActive, чтобы узнать, сколько звезд осталось в живых. Если живых звезд нет, значит, игрок собрал их все, и нам нужно, снова включить все звезды и сбросить их положение по оси Y на ноль. Это заставит все звезды снова упасть с верхней части экрана.

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

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

Показать полностью 5
4

Что за монета такая?

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

Показать полностью 2
8

Разработка игры на phaserjs - 11: счётчик очков

Добрый день, уважаемые читатели.

В прошлом уроке мы добавили в игру звезды и возможность их сбора, таким образом наша игра приобрела некий смысл т.к до этого наш мир был пуст и безжизнен. Однако на данный момент процесс сбора звезд не имеет никакой обратной связи, кроме того что звезда исчезает после того как мы "набегаем" на неё нашим персонажем. Для того что бы сделать этот процесс более интерактивным мы добавим в игру счётчик очков.

Подготовка к работе

для работы над проектом вам понадобится настроенный phaserjs и установленный nodejs. Все необходимые файлы доступны по ссылке.

Реализация счётчика

Для этого мы будем использовать функционал работы с текстом встроенный в phaserjs. Для этого мы объявим две переменные, одна будет содержать текущий счёт, а вторая объект который позволяет работать с текстом:

Для переменной scoreText мы устанавливаем значение в функции create:

Где:

- 16x16 - это координаты на которых будет располагаться счётчик ( отсчёт идет от левого верхнего угла );

- 'score: 0 ' - начальное значение счётчика;

{ fontSize: '32px', fill: '000' } - объект который устанавливает размер и цвет счётчика, если не устанавливать эти параметры по умолчанию phaserjs будет использовать шрифт Courier;

Далее нам нужно изменить функцию collectStar, мы добавим в неё код который будет повышать значение счётчика каждый раз когда мы поднимаем звезду:

Таким образом каждая поднятая звезда будет прибавлять к нашему счётчику 10 очков:

Показать полностью 5
8

Разработка игры на phaserjs - 10: добавление звезд

Добрый день, уважаемые читатели.


Предыдущие уроки:

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

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

Давайте добавим несколько звезд на сцену и позволим игроку собирать их. Для этого мы создадим новую группу под названием «звезды» и заполним ее.

Подготовка к работе

для работы над проектом вам понадобится настроенный phaserjs и установленный nodejs. Все не обходимые файлы доступны по ссылке.

В нашей функции create мы добавляем следующий код:

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

Группы можно настраивать используя объекты конфигурации. В этом случае объект группы состоит из 3 частей:

1. Мы создаем группу объектов и помещаем ее в переменную stars;


2. Устанавливаем ключ текстуры в качестве изображения звезды. Это означает, что все дочерние элементы, добавленные в эту группу будут по умолчанию получать текстуру звезды;


3. Устанавливаем итератор равным 11. Поскольку он автоматически создает 1 дочерний элемент, повторение 11 раз означает, что в общей сложности мы получим 12 дочерних элементов, и это как раз то, что нам нужно для нашей игры.

Последняя часть - setXY - используется для определения позиции 12 дочерних элементов, которые создает группа. Каждый дочерний элемент будет размещен начиная с x: 12, y: 0 и с шагом x70. Это означает, что первый дочерний элемент будет расположен в 12 x 0, второй - в 70 пикселях от 82 x 0, третий - 152 x 0 и т. д. Значения 'step' - это действительно удобный способ разметки дочерних групп во время создания. Значение 70 выбрано, потому что это означает, что все 12 звезд будут идеально расположены на экране.

Следующий фрагмент кода выполняет обход всех элементов в группе и дает им случайное значение отказов Y в диапазоне от 0,4 до 0,8. Диапазон отскока находится между 0, отскока вообще нет, и 1, полный отскок. Поскольку все звезды появляются в точке y, гравитация будет тянуть их вниз, пока они не столкнутся с платформами или землей. Значение отскока означает, что они будут случайным образом возвращаться обратно до тех пор, пока, наконец, не успокоятся.

Если бы мы запустили код так, как сейчас, звезды упали бы сквозь землю игры и скрылись из виду. Чтобы остановить это, нам нужно проверить их столкновение с платформами. Мы можем использовать другой объект Collider для этого:

Помимо этого, мы также проверим, соприкасается ли игрок со звездой или нет:

Это говорит Phaserjs, что нужно проверить совпадение между игроком и любой звездой в группе звезд. Если они найдены, они передаются в функцию collectStar:

Проще говоря, у звезды отключено физическое тело, а ее родительский игровой объект сделан неактивным и невидимым, что убирает его с экрана.

Итог

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

Показать полностью 6
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества