C# Short Posts 🔞 – Telegram
C# Short Posts 🔞
250 subscribers
111 photos
4 videos
151 links
Здесь я, Дима Афонченко @Undermove1, публикую короткие заметки о разработке (и около). Я не претендую на правильность высказываний и открыт к дискуссиям, исправлениям и конструктивной критике. С любыми деструктивными вещами можно приходить в комменты)
Download Telegram
Когда ваших нейронов становится слишком много, то каждую отдельную линию учить сложно. Поэтому нам проще учить такие сложные линии целыми таблицами.

Если считать всё вручную, то это кажется сложным, но на самом деле суть та же, как и в обучении одной линии. Только обучаем пачками
 
Это делается при помощи матричных уравнений, которые в простом виде записываются так:

Kx + C = y
 
И с ними работают все те же действия, что и с обычными уравнениями. Чуть сложнее, но разница не сильно принципиальна.

Эти таблицы бываю маленькими, большими, очень большими и… Просто гигантскими! Как раз у ChatGPT эта таблица настолько большая, что занимает, аж 120 Гб!
 
🙅 Это супер-важно для понимания. Многие думают, что обученная ChatGPT хранит в себе какие-то тексты типа вот так:

жук        бабочка    кирпичик                 if
Фонарь аптека      сейчас 2021 год      канал

🅰️ Но хранит он числа, вот примерно такие:

0.2324234   0.3452345  0.2873456 …
0.2324234   0.3452345  0.2873456 …
…                   …                  …
Этих чисел там миллиарды, и именно они приводят к тому, что ChatGPT может генерировать те кучи осмысленного текста, которые мы видим!

P.S.: Слова ChatGPT в себе всё же хранит, но об этом чуть позже.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1🤔1
🤔 Почему ChatGPT может то что может. Часть 4. Embeddings и Word2Vec
 
Итак, мы поняли, что ChatGPT оперирует только цифрами. Тогда как он справляется с тем, что мы даем ему буквы? Он превращает их в цифры!
 
Как же оцифровать слова? На самом деле мы с вами это делали в школе, но не придавали особого значения такой скучной штуке, как морфологический разбор. Это была настоящая цифровизация на минималках
 
К примеру, оцифруем слова "король" и "королева":
                     Существительное:   Одушевленное:  Род мужской:
Король:      1                                   1                              1
Королева:  1                                   1                              0
 
Король у нас теперь представлен тремя числами: 1, 1, 1
Как и королева: 1, 1, 0
 
Если мы разместим их на трехмерном графике существительных, то увидим, что они довольно близки:
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы оцифровали слова по трем параметрам для удобства. Но параметров может быть сильно больше. У модели GPT 2 для каждого набора слов может быть более 1600 разных параметров.
 
То есть, перед тем, как прочитать ваше предложение и сделать выводы, ChatGPT сначала превращает каждое слово в набор цифр. Если вам интересно, как это работает математически, то сильно рекомендую почитать статью про алгоритм word2vec (или вот тут, чуть более лаконично, но на английском)
 
🅰️ Набор цифр, который описывает слово называется Embedding. От английского слова embedded - включать в себя. То есть по сути эмбеддинг это однострочная таблица цифр, которая показывает какие свойства ВКЛЮЧАЕТ в себя слово.
🔥311
🤔 Почему ChatGPT может то что может. Часть 5. Работа в общих чертах. Внутренний словарь.
Прежде чем двигаться дальше, суммируем полученные знания.
1️⃣ Мы поняли, что задача ChatGPT – это предсказать следующее слово.
2️⃣ Мы поняли, что нейронная сеть – это большая-большая таблица чисел.
3️⃣ Мы можем превращать слова в таблицы чисел.
4️⃣ Мы можем перемножать таблицы чисел между собой.
5️⃣ После перемножения двух таблиц чисел получается ещё одна таблица чисел.
 
Этих знаний нам уже хватит, чтобы переварить обобщенную схему того, как работает ChatGPT: 
1️⃣ Переводит каждое слово из предложения в таблицу чисел
2️⃣ Перемножает эти числа на свои внутренние таблицы
3️⃣ На выходе получает результирующую таблицу чисел.
4️⃣ Находит в словаре слово у которого таблица больше всего похожа на результирующую таблицу числел.
 
Вот как это выглядит на очень упрощенной схеме (квадратики это ячейки таблицы):
Please open Telegram to view this post
VIEW IN TELEGRAM
В текстовом варианте:
 
1️⃣ Превращаем каждое слово в набор цифр – покрашены желтым цветом. 🟨
2️⃣ Перемножаем эти цифры на огромные таблицы. Числа в этих таблицах долго подбирались в процессе обучения модели. Зеленые квадратики. 🟩
3️⃣ Результатом этого перемножения служит другой набор цифр, который мы должны превратить в слово. Розовые квадратики 🟪
4️⃣ У ChatGPT есть внутрениий словарь, в котором лежат слова, а напротив этих слов лежат наборы цифр. По набору цифр ChatGPT находит нужное слово в своем словаре. В нашем случае это будет слово "компания"
 
Давайте чуть подробнее остановимся на последнем этапе. В слове явно есть ошибка в склонении. Итоговая фраза будет звучать правильно, но кривовато: "Список страховых компания" Это нужно поправить, и тут мы подбираемся в такому понятию, как токены.

P.S: Опять же я тут много много подробностей опустил. К примеру про такую интересную штуку, как внутреннее внимание. Вы можете почитать про него подробнее вот в этой статье. Вообще у автора целая серия статей, где рассказывается всё немного подробнее, но без душной математики.

Не поймите меня неправильно – математика заебись, просто иногда хочется обойдись без неё, чтобы понять, а надо ли в неё лезть.

P.P.S: Правда прочитайте статью, она охуенная!
🔥31👌1
🤔 Почему ChatGPT может то что может. Часть 6. Работа в общих чертах. Токены. Автогрегрессия.
Итак, мы дали чату фразу "Список страховых" А он сгенерировал нам фразу "Список страховых компания". Окончание у последнего слова хромает.

На самом деле большой проблемы в этом нет. Дело в том, что слово "компания" мы выбирали из словаря, где хранятся целые слова. Если хранить слова не целиком, а по кусочкам, то всё быстро выправляется.
Please open Telegram to view this post
VIEW IN TELEGRAM
🅰️ Такие кусочки слов называются токенами. Так что теперь вы знаете, что такое токены – это просто кусочки слов в словаре ChatGPT.
 
Поэтому после прохождения четырёх итераций мы получим вот такой результат:
"Список страховых компаний”
 
Чтобы эту фразу закончить ChatGPT просто засунет фразу "Список страховых комп" в самого себя и попробует дополнить её еще раз:
🅰️ Такой метод называется авторегрессией. То есть вы сами что-то сгенерировали и используете это для того, чтобы сгенерировать продолжение.

Собственно это одна из причин, почему ChatGPT отвечает потихоньку, а не всей фразой целиком.
 
Ок. Мы разобрали все аспекты работы ChatGPT. Далее разберёмся с тем, как же он сгенерировал нам список страховых компаний, и почему все эти номера и адреса оказались ненастоящими.
🔥2👏1🤩1
🤔 Почему ChatGPT может то что может. Часть 7. Как учат ChatGPT.
Мы почти подобрались к концу, осталось понять, как учат ChatGPT.

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

К примеру возьмем необученную сеть и дадим ей продолжить фразу “Список страховых”:
Please open Telegram to view this post
VIEW IN TELEGRAM
Видим, что получившийся набор цифр и слово, которому он соответствует нам не подходят, так как обозначают слово “арбуз”.

Просим GPT пересчитать внутренние таблицы и снова даем начальную фразу:
Теперь получилось слово “компаний”. Нам подходит. Можем брать новую фразу и предлагать продолжить её. Разумеется, в реальности нейронка не обучится так быстро. Вначале она довольно долго будет выдавать билиберду, поэтому этот процесс будет происходить миллионы раз по каждому из примеров.

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

И вот тут у меня главная сложность. Для твердого объяснения того, почему результат о страховых компаниях получается неточным, мне бы нужны исходные данные, на которых тренировали GPT.
 
OpenAI не показывает сами данные, на которых училась модель. Зато вот тут описываются методы, которыми тренировали предыдущую версию модели. Поэтому я могу лишь теоретизировать на основе тех ответов, которые возвращает ChatGPT.
👉 Представим, что данные для обучения по страховым компаниям Батуми выглядели вот так:

Aldagi – страховая компания Батуми телефон +995 422 27 27 27 – повторяется в выборке 100 000 раз
GPI Holding – страховая компания телефон +995 634 13 29 45 – повторяется в выборке 500 раз
Imedi L – страховая компания +995 345 13 12 22 – повторяется в выборке 100 раз.
Pasha Insuranse – страховая компания Батуми +995 125 83 39 54 – повторяется в выборке 5 раз.
 
Первая компания в обучающей выборке попадается 100 000 раз. Это значит, что при обучении чату ГПТ буквально говорят: вероятность выпадения комбинации цифр +995 422 27 27 27 при упоминании слов "Батуми" и "Страховая компания" в 200 раз выше, чем комбинации "+995 634 13 29 45"
 
Это не значит, что чатГПТ так и решит, что надо выдавать эти цифры, просто вероятность этих цифр будет сильно выше. Что мы и видим на скриншоте, там секвенция +995 422 27 27 27 повторяется довольно часто и для разных компаний.
Please open Telegram to view this post
VIEW IN TELEGRAM
🅰️ Итого: Что важно понимать – у ChatGPT нет данных за 2021 год. У него есть весовые коэффициенты, есть словарь токенов, но самих данных нет! Это одна из тех сложностей, которая приводит к коллизиям, когда кто-то просит удалить из нейронки некоторые данные. Это сделать невозможно! Потому что данных нет. Есть таблицы с цЫфрами, и есть таблицы с обрывками слов, но самих данных нет. 🥷

Именно поэтому задачи на агрегацию данных ChatGPT решает не лучше, чем игральный кубик решает примеры на умножение. То есть вы можете выбросить верный ответ, но это будет везением, а не законоерным результатом.
🔥21👍1
🤔 Почему ChatGPT может то что может. Часть 8. Как сделать ответы правильными. Плагины.
Когда я только начал писать эту серию постов, у ChatGPT вышли плагины. Это именно то, что нужно.

Раньше мы могли взять сгенерированную ChatGPT строчку и пойти в интернет, чтобы факт-чекнуть то, что выдал нам злой ИИ. Но теперь, с помощью плагинов, он это может делать сам.
 
То есть в случае с плагинами, мы попросим чат выдать нам список из 10-ти страховых компаний. Он сгенерирует какую-то чушь, а затем пойдет в поисковую истему с вопросом: "Существует ли страховая компания Aldagi в Батуми?" И если ответ будет да, то он вытащит сам из поисковой выдачи нужные данные и подправит свою строку.

В этом случае, мы действительно будем работать с данными, которым можно доверять. И вот это уже неверотно круто!

🅰️Итого: мы теперь знаем как устроены простые нейроны, как работает ChatGPT, как его учат, и как плагины вылечивают случайный характер ответов от нейронки. Думаю что через некоторое время появится куча надстроек, которые сделают ChatGPT еще более магическим, и надеюсь, что эти посты как-то помогут развеять эту магию.

P.S.: Ффух. На этом всё. Я уже давал себе зарок не писать длинные серии статей. Но очень интересно было разбираться с тем, как всё это работает.

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

Ну и пишите в комментах и в личку, если знаете лучше меня, как это всё работает. Я часто делаю ошибки, но всегда стараюсь их признавать и исправлять.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1