В предыдущих сериях мы взяли нейрон y = kx
И обучили его вручную. Это читерство, мы такое не одобряем. Так что давайте сделаем это по чести.
Обучение нейрона тоже похоже на настольную игру. Первый ход в этой игре выглядит примерно так:
Пройдем по шагам:
1. Предположим мы случайно выбрали значение k = 0,25
Please open Telegram to view this post
VIEW IN TELEGRAM
2. Проверяем. Мы видим, что эта линия нам не подходит, так как и жуки и гусеницы лежат поверх линии – нейрон всех считает гусеницами. Считаем ошибку:
Ошибка = желаемое - текущее.
Желаемое = 1,1
Текущее = 0,25*3 = 0,75
Ошибка = 0,35
Ошибка = желаемое - текущее.
Желаемое = 1,1
Текущее = 0,25*3 = 0,75
Ошибка = 0,35
Пунктирную линию мы провели сами – таким образом мы показываем нейрону, какое значение мы от него бы хотели.
Это снова кажется читерством, но именно так и происходит обучение! Нейронка говорит вам, что думает по какому-то вопросу, вы говорите ей, что хотели бы, чтобы она думала, и в следующий раз она думает правильнее.
3. Пересчитываем коэффициент k:
Считаем насколько надо изменить k:
∆k = Ошибка / x = 0,35 / 3 = 0,1167
k = k_предыдущее + ∆k = 0,25 + 0,1167 = 0,3667
Итак, новый нейрон будет выглядеть вот так:
Если 0,3667x > y, то это жук
Если 0,3667x < y, то это гусеница
Теперь линия лежит там где нужно и отличает жуков от гусениц.
P.S.: Я тут пропустил вывод формул, поэтому может возникнуть недопонимание. Для более подробного ознакомления с математикой этого процесса, вы можете почитать про такую штуку как Градиентный спуск. Лучше всего её изучать с компом, и с книгой Тарика Рашида, о которой я упоминал выше.
Это снова кажется читерством, но именно так и происходит обучение! Нейронка говорит вам, что думает по какому-то вопросу, вы говорите ей, что хотели бы, чтобы она думала, и в следующий раз она думает правильнее.
3. Пересчитываем коэффициент k:
Считаем насколько надо изменить k:
∆k = Ошибка / x = 0,35 / 3 = 0,1167
k = k_предыдущее + ∆k = 0,25 + 0,1167 = 0,3667
Итак, новый нейрон будет выглядеть вот так:
Если 0,3667x > y, то это жук
Если 0,3667x < y, то это гусеница
Теперь линия лежит там где нужно и отличает жуков от гусениц.
P.S.: Я тут пропустил вывод формул, поэтому может возникнуть недопонимание. Для более подробного ознакомления с математикой этого процесса, вы можете почитать про такую штуку как Градиентный спуск. Лучше всего её изучать с компом, и с книгой Тарика Рашида, о которой я упоминал выше.
🔥4⚡1🤔1
А что если нам нужно больше различий? Например отличать не только жуков и гусениц, но и бабочек?
Мы просто добавим новую линию, и будем обучать уже два нейрона! То есть у нас появится два коэффициента k:
Please open Telegram to view this post
VIEW IN 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 в себе всё же хранит, но об этом чуть позже.
Если считать всё вручную, то это кажется сложным, но на самом деле суть та же, как и в обучении одной линии. Только обучаем пачками
Это делается при помощи матричных уравнений, которые в простом виде записываются так:
Kx + C = y
И с ними работают все те же действия, что и с обычными уравнениями. Чуть сложнее, но разница не сильно принципиальна.
Эти таблицы бываю маленькими, большими, очень большими и… Просто гигантскими! Как раз у ChatGPT эта таблица настолько большая, что занимает, аж 120 Гб!
жук бабочка кирпичик 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 оперирует только цифрами. Тогда как он справляется с тем, что мы даем ему буквы? Он превращает их в цифры!
Как же оцифровать слова? На самом деле мы с вами это делали в школе, но не придавали особого значения такой скучной штуке, как морфологический разбор. Это была настоящая цифровизация на минималках
К примеру, оцифруем слова "король" и "королева":
Существительное: Одушевленное: Род мужской:
Король: 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 - включать в себя. То есть по сути эмбеддинг это однострочная таблица цифр, которая показывает какие свойства ВКЛЮЧАЕТ в себя слово.
То есть, перед тем, как прочитать ваше предложение и сделать выводы, ChatGPT сначала превращает каждое слово в набор цифр. Если вам интересно, как это работает математически, то сильно рекомендую почитать статью про алгоритм word2vec (или вот тут, чуть более лаконично, но на английском)
🅰️ Набор цифр, который описывает слово называется Embedding. От английского слова embedded - включать в себя. То есть по сути эмбеддинг это однострочная таблица цифр, которая показывает какие свойства ВКЛЮЧАЕТ в себя слово.
🔥3⚡1❤1
Прежде чем двигаться дальше, суммируем полученные знания.
Этих знаний нам уже хватит, чтобы переварить обобщенную схему того, как работает 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: Правда прочитайте статью, она охуенная!
1️⃣ Превращаем каждое слово в набор цифр – покрашены желтым цветом. 🟨
2️⃣ Перемножаем эти цифры на огромные таблицы. Числа в этих таблицах долго подбирались в процессе обучения модели. Зеленые квадратики. 🟩
3️⃣ Результатом этого перемножения служит другой набор цифр, который мы должны превратить в слово. Розовые квадратики 🟪
4️⃣ У ChatGPT есть внутрениий словарь, в котором лежат слова, а напротив этих слов лежат наборы цифр. По набору цифр ChatGPT находит нужное слово в своем словаре. В нашем случае это будет слово "компания"
Давайте чуть подробнее остановимся на последнем этапе. В слове явно есть ошибка в склонении. Итоговая фраза будет звучать правильно, но кривовато: "Список страховых компания" Это нужно поправить, и тут мы подбираемся в такому понятию, как токены.
P.S: Опять же я тут много много подробностей опустил. К примеру про такую интересную штуку, как внутреннее внимание. Вы можете почитать про него подробнее вот в этой статье. Вообще у автора целая серия статей, где рассказывается всё немного подробнее, но без душной математики.
Не поймите меня неправильно – математика заебись, просто иногда хочется обойдись без неё, чтобы понять, а надо ли в неё лезть.
P.P.S: Правда прочитайте статью, она охуенная!
Хабр
Transformer в картинках
В прошлой статье мы рассматривали механизм внимания (attention) – чрезвычайно распространенный метод в современных моделях глубокого обучения, позволяющий улучшить показатели эффективности приложений...
🔥3❤1👌1
Итак, мы дали чату фразу "Список страховых" А он сгенерировал нам фразу "Список страховых компания". Окончание у последнего слова хромает.
На самом деле большой проблемы в этом нет. Дело в том, что слово "компания" мы выбирали из словаря, где хранятся целые слова. Если хранить слова не целиком, а по кусочкам, то всё быстро выправляется.
Please open Telegram to view this post
VIEW IN TELEGRAM
🅰️ Такие кусочки слов называются токенами. Так что теперь вы знаете, что такое токены – это просто кусочки слов в словаре ChatGPT.
Поэтому после прохождения четырёх итераций мы получим вот такой результат:
"Список страховых компаний”
Чтобы эту фразу закончить ChatGPT просто засунет фразу "Список страховых комп" в самого себя и попробует дополнить её еще раз:
Поэтому после прохождения четырёх итераций мы получим вот такой результат:
"Список страховых компаний”
Чтобы эту фразу закончить ChatGPT просто засунет фразу "Список страховых комп" в самого себя и попробует дополнить её еще раз:
🅰️ Такой метод называется авторегрессией. То есть вы сами что-то сгенерировали и используете это для того, чтобы сгенерировать продолжение.
Собственно это одна из причин, почему ChatGPT отвечает потихоньку, а не всей фразой целиком.
Ок. Мы разобрали все аспекты работы ChatGPT. Далее разберёмся с тем, как же он сгенерировал нам список страховых компаний, и почему все эти номера и адреса оказались ненастоящими.
Собственно это одна из причин, почему ChatGPT отвечает потихоньку, а не всей фразой целиком.
Ок. Мы разобрали все аспекты работы ChatGPT. Далее разберёмся с тем, как же он сгенерировал нам список страховых компаний, и почему все эти номера и адреса оказались ненастоящими.
🔥2👏1🤩1