Срыв покровов с ИИ 3

Меня уже спрашивают в комментах: «Как нейронка рисует именно котика, когда я прошу нарисовать котика? Теперь, когда вы уже добавили себе в резюме глубинное обучение, пришла пора познакомить вас с незаметным труженником, рабочей лошадкой творящегося нейробезумия — автоэнкодером.       Автоэнкодер это нейронка, выходной слой которой в точности такой же как входной, а один из внутренних слоев имеет небольшую размерность, допустим, пусть в нем будет 100* нейронов/кружочков. Представьте себе две воронки, склеенные горлышками вместе, это и будет автоэнкодер. Его учат в точности повторять на выходном слое то, что подано на входной. Казалось бы, зачем нам нейронка, которая умеет преврашать картинку с котиком в точно такую же картинку? Но после обучения, молодую наивную нейронку сразу же подвергают жестокому расчленению прямо по узкому месту. Понимаете к чему я клоню?       Из этой нейронки получаются две, одна умеет сжимать что угодно в сто байт информации, а другая разжимать что угодно из ста байт.       И эти сто байт (их называют эмбеддингами) обладают поистине волшебными свойствами.       По сути, эти сто байт можно рассматривать как точку в стомерном (привет улиткам) смысловом пространстве, где каждому понятию соответствует своя точка. Где-то там есть точка котика, где-то астронавт на лошади, да, и то о чем ты сейчас подумал, там тоже есть, маленький извращенец.       Так вот, нейронки обычно оперируют данными имено в этом пространстве Это позволяет значительно уменьшить объем модели и увеличить скорость, ведь обрабатывать нужно всего сто байт. А еще можно, например сделать универсальный поисковик, который будет искать документы по смыслу (спойлер: поисковики давно уже так работают) достаточно найти точки документов поблизости от точки запроса.       Стейбл дифьюжен, которая рисует картинки улучшает картинку тоже именно в этом пространстве. Когда пользователь вводит текстовый запрос, он сразу переводится в пространство эмбеддингтв, и при каждой итерации нейронку немного подталкивают к этой точке. Если дойдут руки, покажу вам на примерах, как рисуется котик на каждой итерации.

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