Гений кода. Истории самых впечатляющих ИИ-проектов, которые уже меняют жизнь
Гений кода. Истории самых впечатляющих ИИ-проектов, которые уже меняют жизнь

Полная версия

Гений кода. Истории самых впечатляющих ИИ-проектов, которые уже меняют жизнь

Язык: Русский
Год издания: 2026
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
4 из 7

P.S.

Знаешь, что самое забавное? Когда BERT только вышел, многие критики говорили: «Ну, понимание контекста – это круто, но до настоящего интеллекта ещё далеко». Они были правы. Но они не знали, что семена уже посеяны.

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

Глава 10. GANs (Состязательные сети): История про художника и критика, которые создают идеальные подделки

Крючок: Лицо, которого нет

Зайди на сайт ThisPersonDoesNotExist.com. Нажми F5. Ты увидишь лицо человека. Красивого, живого, с морщинками, родинками, эмоциями. Нажми ещё раз – новое лицо. Ещё раз – новое.

Ни одного из этих людей не существует в реальности. Никогда не существовало. Это чистая генерация нейросети. Они не родились, не ходили в школу, не любили, не страдали. Их просто нарисовала машина.

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

Герой: Канадец, которого достала скука

История GAN началась в 2014 году в Монреале. Молодой исследователь по имени Ян Гудфеллоу (Ian Goodfellow) работал в лаборатории знаменитого Йошуа Бенжио (одного из «трёх китов» глубокого обучения).

По легенде (а Гудфеллоу подтверждает её в интервью), идея пришла к нему в баре.

Они сидели с друзьями после защиты диссертации одного из коллег. Разговор зашёл о нейросетях, и кто-то сказал: «Всё, что мы умеем – это классифицировать и предсказывать. Мы не умеем создавать новое. Машины не творческие».

Ян задумался. А что, если заставить две нейросети соревноваться? Что, если одна будет пытаться обмануть другую? Он достал ноутбук, прямо в баре начал писать код и к утру у него была работающая версия.

Это был момент истинной гениальности – не в лаборатории, не на суперкомпьютере, а в баре за кружкой пива.

Конфликт: Почему машины не умели творить

До GAN всё, что умели нейросети – это распознавать и классифицировать. Они смотрели на картинку и говорили: «Это кот», «Это не кот». Они были как искусствоведы, которые могут отличить Пикассо от Матисса, но сами нарисовать не могут.

Задача генерации (создания нового) казалась неразрешимой. Потому что «правильного ответа» нет. Как проверить, хорошую картинку нарисовала нейросеть или плохую? Кто судья?

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

Нужен был принципиально новый подход.

Развязка: Гениальная дуэль

Ян Гудфеллоу придумал гениально простую конструкцию. Он взял две нейросети и поставил их играть в игру с нулевой суммой (кто выиграл, тот и съел).

Игрок 1: Генератор (Художник-фальшивомонетчик).

Это нейросеть, которая учится создавать подделки. На входе она получает случайный шум (набор случайных чисел). На выходе выдаёт картинку. Сначала это просто цветной мусор, абстракция, похожая на телевизионные помехи.

Игрок 2: Дискриминатор (Критик-искусствовед).

Это нейросеть, которая учится отличать подлинники от подделок. Ей показывают и настоящие фотографии из базы данных, и творения Генератора. Она должна сказать: «Настоящее» или «Подделка».

Правила игры:

– Генератор создаёт подделку.

– Дискриминатор оценивает: «Фу, ерунда, видно же, что подделка».

– Генератор получает по носу (штраф) и подкручивает свои настройки, чтобы в следующий раз обмануть критика лучше.

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

– И так миллион раз.

Эволюция:

– Раунд 1: Генератор рисует серое месиво. Дискриминатор смеётся: «Это подделка, 100%».

– Раунд 1000: Генератор рисует что-то, отдалённо похожее на размытое лицо. Дискриминатор говорит: «Сомнительно, но похоже на подделку».

– Раунд 1 000 000: Генератор рисует идеальное фото человека. Дискриминатор в панике: «Я не знаю… может, настоящее?».

Когда игра доходит до конца, наступает равновесие Нэша (то самое, из «Игр разума» про Джона Нэша): Дискриминатор уже не может отличить подделку от оригинала, потому что Генератор научился создавать идеальные копии.

Инсайт: Почему это гениально

Гениальность GAN в том, что критик обучается вместе с художником.

В обычной нейросети ты фиксируешь «правильные ответы» и учишь сеть под них подстраиваться. В GAN нет фиксированных ответов. Есть только вечная гонка вооружений. Дискриминатор становится всё более требовательным, и Генератор вынужден становиться всё более искусным, чтобы его обмануть.

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

Эволюция: От размытых лиц к фотореализму

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

DCGAN (2015): Добавили свёрточные слои (те, что из AlexNet). Картинки стали чётче, появилась структура.

CycleGAN (2017): Научилась превращать лошадей в зебр, лето в зиму, эскизы в фото. Без парных примеров! Просто берёт два набора картинок (сотни фото лошадей и сотни фото зебр) и учится переводить одно в другое.

StyleGAN (2018) от NVIDIA: Прорыв года. StyleGAN научилась генерировать лица в супер-высоком разрешении, с контролем стиля. Хочешь, чтобы у человека были веснушки? Пожалуйста. Хочешь изменить возраст? Легко. Хочешь повернуть голову? Без проблем. Именно StyleGAN лежит в основе сайта ThisPersonDoesNotExist.com.

BigGAN (2019): Научилась генерировать не только лица, а вообще всё: собак, цветы, еду, пейзажи. Качество стало почти фотографическим.

Темная сторона: Империя фейков

Как только GAN научились создавать неотличимые от реальности изображения, начался кошмар.

1. Deepfakes (дипфейки).

Самое известное (и страшное) применение. Люди начали накладывать лица знаменитостей на порно-ролики. Потом – лица политиков на видео, где они говорят то, чего никогда не говорили. Потом – лица обычных людей. Теперь любой человек с видеокартой может «заставить» любого другого человека сказать что угодно.

2. Фейковые новости.

Представь фотографию, на которой президенты пожимают руки врагам. Или солдаты совершают военные преступления. Фотошоп раньше был заметен. StyleGAN создаёт фото, которые не отличить от настоящих. Доказательств больше не существует.

3. Кража личности.

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

4. Порноместь.

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

Борьба: Охотники за фейками

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

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

– Компании вроде Microsoft вкладывают миллионы в создание «водяных знаков» для настоящих видео.

– Учёные разрабатывают методы, которые позволяют определить, какой именно GAN создал картинку (у каждой архитектуры есть свой «почерк»).

Но это гонка без финиша. Как только детекторы учатся ловить один тип фейков, GAN учатся их обходить.

Наследие: Эра пост-правды

Что оставили нам GAN?

Для творчества:

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

Для науки:

GAN используют для создания новых молекул (лекарств), для улучшения снимков МРТ (делают чётче без дополнительного облучения), для восстановления старых фотографий.

Для общества:

Мы вступили в эру, где видеть – больше не значит верить. Фотография перестала быть доказательством. Любое изображение может быть подделкой. Это требует от нас нового уровня критического мышления.

Твой ход: Четыре урока от GAN

– Конкуренция рождает качество. Генератор и Дискриминатор стали гениями только потому, что соревновались. В жизни тоже: здоровый конфликт, обратная связь от «критика» делает тебя лучше.

– Творчество – это комбинация. GAN не создают из ничего. Они комбинируют элементы из миллионов примеров. Твоё творчество – тоже переработка опыта. Не бойся заимствовать и смешивать.

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

– Проверяй реальность. Если увидел скандальное фото или видео в интернете – не верь сразу. Ищи источник, смотри на детали, включай критическое мышление. Мир стал сложнее.

P.S.

Знаешь, что сказал Ян Гудфеллоу, когда его спросили про дипфейки и фейковые новости?

«Я создавал технологию, чтобы машины могли творить. Я не думал о злоумышленниках. Но науку не остановить. Мы должны учить людей думать, а не запрещать технологии».

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

Глава 11. ResNet: Почему «остаточные связи» позволили строить сети толщиной в сотни слоев

Крючок: Парадокс строителя

Представь, что ты строишь небоскрёб. Ты начинаешь с 10 этажей. Здание стоит крепко. Ты добавляешь ещё 10 – всё хорошо. Ещё 10 – стоит.

Но вдруг, когда ты доходишь до 50 этажей, происходит странное: нижние этажи начинают проседать. Бетон трескается. Здание становится менее устойчивым, чем 40-этажное. Хотя по логике, чем выше здание, тем оно прочнее (если строить правильно), но здесь что-то идёт не так.

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

Но практика показывала обратное: сети глубиной более 20—30 слоёв начинали учиться хуже, чем их мелкие собратья. Ошибка на обучении не уменьшалась, а росла. Это было проклятие, которое грозило остановить прогресс.

Герои: Команда из Пекина, которая победила всех

В 2015 году группа исследователей из Microsoft Research Asia (пекинский офис) под руководством Каймина Хэ (Kaiming He) работала над этой проблемой.

Каймин Хэ – фигура легендарная. Позже он уйдёт в Фейс и станет одним из главных людей в мире компьютерного зрения. Но тогда это был просто талантливый учёный, который бился над проклятием глубины.

Команда (Сяньюй Чжан, Шаоцин Жэнь, Цзянь Сунь) задала себе простой вопрос: «Почему глубокие сети работают хуже? Ведь они могут аппроксимировать мелкие, просто обнуляя лишние слои?»

Теоретически, если у тебя есть сеть в 50 слоёв, ты можешь сделать первые 20 слоёв такими же, как в 20-слойной сети, а остальные 30 превратить в тождественное преобразование (то есть они просто передают сигнал дальше, не меняя его). Тогда 50-слойная сеть должна работать не хуже 20-слойной.

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

Конфликт: Проклятие градиента

Чтобы понять проблему, нужно вспомнить, как учатся нейросети.

Ошибка (разница между ответом сети и правильным ответом) передаётся от последнего слоя к первому. Это называется обратное распространение ошибки. Градиент (сигнал ошибки) проходит через каждый слой и подсказывает, как менять веса.

Но когда сеть очень глубокая, градиент, проходя через десятки слоёв, начинает вести себя плохо. Он либо затухает (становится почти нулевым – vanishing gradient), либо взрывается (становится бесконечно большим – exploding gradient).

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

Сети просто не могли доставить сигнал ошибки от выхода до входа, не потеряв его по дороге. Это был тупик.

Развязка: Шорткат (Обходной путь)

Решение, которое предложила команда Каймина Хэ, было гениальным в своей простоте. Они придумали Residual Block (Остаточный блок).

Обычный слой нейросети пытается выучить нужное преобразование напрямую. Например: Выход = Функция (Вход).

В Residual Block они изменили формулу. Теперь слой учится не самому выходу, а разнице (остатку) между входом и выходом.

Выход = Вход + Остаток (Вход)

Что это значит на практике?

В блок добавляется прямое соединение (shortcut connection), которое перескакивает через один или несколько слоёв и просто прибавляет исходный вход к результату работы слоя.

Как это работает:

– Есть вход X.

– Он проходит через несколько слоёв, которые вычисляют некое изменение F (X).

– Потом мы берём исходный X и прибавляем к нему это изменение: Выход = F (X) + X.

Зачем это нужно?

Теперь у градиента есть обходной путь. Когда ошибка идёт обратно, она может пройти не через сложные слои, а напрямую по этому «шорткату». Это решает проблему затухания градиента.

Кроме того, сети становится легче учиться. Если дополнительные слои не нужны, сеть может просто сделать F (X) = 0, и тогда Выход = X (тождественное преобразование). Градиентный спуск легко находит такое решение, потому что обнулить изменение проще, чем выучить сложную функцию.

Инсайт: Почему это гениально

Гениальность ResNet в том, что она переопределила задачу обучения.

Вместо того чтобы заставлять каждый новый слой выучивать сложную функцию с нуля, ResNet говорит: «Ты уже знаешь, что у тебя есть. Просто добавь немного улучшений».

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

Триумф: Победа на ImageNet 2015

В 2015 году команда Microsoft Research выставила ResNet на тот же конкурс ImageNet, где в 2012 году победила AlexNet.

Результаты были ошеломляющими.

ResNet выиграла с результатом, который считался невозможным. Ошибка распознавания упала до 3,57%. Это лучше, чем у человека (средний человек ошибается примерно в 5% случаев).

Но главное было не в цифрах. Главное было в глубине. ResNet-152 (152 слоя) работала стабильно и показывала лучшие результаты, чем любые мелкие сети. Проклятие глубины было снято.

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

Эволюция: От 152 слоёв до бесконечности

После ResNet началась гонка глубины.

– ResNet-152 – 152 слоя.

– ResNet-1001 – 1001 слой (экспериментально показали, что можно обучать и такие глубины, хотя практической пользы было мало).

– DenseNet – пошли ещё дальше: там каждый слой соединяется со всеми предыдущими напрямую.

– ResNeXt, Wide ResNet – варианты, которые оптимизировали ширину и архитектуру блоков.

Главное было доказано: глубина работает, если правильно организовать обходные пути.

Наследие: ResNet в каждом телефоне

Сегодня ResNet живёт везде.

– Распознавание лиц в телефоне. Когда твой iPhone разблокируется по лицу, внутри работает сеть, основанная на residual-блоках.

– Медицина. Анализ снимков МРТ и КТ – везде ResNet или её наследники.

– Беспилотные автомобили. Распознавание пешеходов, знаков, дорожной разметки – всё это требует глубины, которую дала ResNet.

– Сателлиты. Анализ снимков Земли из космоса.

– Любая задача компьютерного зрения. Если ты видишь современную нейросеть для картинок, в ней почти наверняка есть residual connections.

Твой ход: Четыре урока от ResNet

– Ищи обходные пути. Если задача кажется нерешаемой из-за сложности, попробуй найти «шорткат». Не пытайся выучить всё с нуля – используй то, что уже знаешь, и добавляй небольшие улучшения.

– Учись прибавлять, а не заменять. Иногда проще научиться дополнять существующее, чем создавать новое с нуля. Это работает и в коде, и в жизни.

– Проблема может быть в доставке сигнала. Если ты не видишь прогресса, проверь, доходит ли «сигнал» (обратная связь, информация, мотивация) до первых слоёв твоей системы. Может быть, он затухает по пути.

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

P.S.

Знаешь, что сказал Каймин Хэ, когда его спросили, как они додумались до residual connections?

«Мы просто долго смотрели на проблему и думали: „Что самое простое решение, которое может сработать?“ Идея была настолько очевидной, что мы удивлялись, почему никто не сделал этого раньше».

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

Глава 12. Word2Vec: Элегантность математики: Король – Мужчина + Женщина = Королева

Крючок: Магия арифметики

Представь, что я даю тебе задание по математике.

Сложи числа: 5 +3 = 8. Вычти: 10 – 4 = 6. Скучно, да?

А теперь представь другое задание. Я говорю:

«Король» минус «Мужчина» плюс «Женщина» =?

Ты, не задумываясь, отвечаешь: «Королева».

Но как это возможно? Как можно вычитать и складывать слова? Слова – это не числа. Это смыслы, образы, культурные коды.

А теперь представь, что компьютер, который ничего не понимает в королях и королевах, вдруг выдаёт тот же ответ. И не только этот. Он считает: «Париж» – «Франция» + «Италия» = «Рим». «Берлин» – «Германия» + «Франция» = «Париж».

Это не магия. Это Word2Vec. И это одна из самых элегантных идей в истории искусственного интеллекта.

Герои: Чех и его русская жена в Google

История Word2Vec началась в 2013 году в недрах Google. Главным героем был Томаш Миколов (Tomáš Mikolov) – чешский учёный, который работал в Google Brain.

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

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

Конфликт: Как объяснить слово компьютеру

До Word2Vec компьютеры работали со словами двумя примитивными способами.

Способ 1: Индексы (One-hot encoding).

Каждому слову присваивался уникальный номер. «Кот» = 1, «Собака» = 2, «Король» = 3.

Проблема: для компьютера слова были просто ярлыками. «Кот» и «Собака» – такие же разные, как «Кот» и «Атомный реактор». Никакой связи, никакого смысла. Машина не знала, что кошки и собаки – это животные, а атомный реактор – это нечто другое.

Способ 2: Мешки слов (Bag of Words).

Текст превращался в набор слов без порядка. Терялся контекст, терялась грамматика, терялось всё.

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

Развязка: Гениальная простота

Идея Миколова была обманчиво проста: «Скажи мне, с кем ты дружишь, и я скажу, кто ты».

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

Миколов взял эту идею и превратил её в алгоритм.

Как это работает (максимально просто):

– Берётся огромный текст (например, весь Google Books или вся Википедия).

– Нейросеть учится предсказывать слово по его соседям.

– Берём предложение: «Я пью горячий…».

– Прячем слово «чай».

– Нейросеть должна угадать: какое слово тут пропущено?

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

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

Варианты обучения:

– CBOW (Continuous Bag of Words): По контексту угадываем слово. (Соседи говорят, какое слово в центре).

– Skip-gram: По слову угадываем контекст. (Слово говорит, какие соседи у него должны быть).

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

Инсайт: Арифметика смыслов

И вот тут начинается самое интересное.

Когда у тебя есть векторы слов, ты можешь их складывать и вычитать. И векторы ведут себя как настоящие смыслы!

Классический пример:

Возьмём вектор слова «Король». Вычтем из него вектор «Мужчина». Прибавим вектор «Женщина». Получится точка, которая ближе всего к вектору слова «Королева».

Это не случайность. Это работает потому, что в процессе обучения нейросеть уловила, что разница между «Королём» и «Королевой» примерно такая же, как между «Мужчиной» и «Женщиной». И эта разница выражается в одних и тех же числах.

Другие примеры:

– Столицы: «Париж» – «Франция» + «Италия» = «Рим»

– Времена глаголов: «Идти» – «шёл» + «думал» = «думать»

– Род занятий: «Доктор» – «мужчина» + «женщина» = «женщина-врач» (иногда получалось даже с учётом стереотипов, что показывало проблему данных)

Почему это гениально

Гениальность Word2Vec в трёх вещах:

1. Обучение без учителя.

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

2. Перенос смысла в математику.

Впервые смысл стал вычислимым. Мы можем измерять близость слов (косинусное расстояние между векторами). Мы можем искать аналогии. Мы можем кластеризовать слова по темам.

3. Эффективность.

Word2Vec работает быстро и не требует суперкомпьютеров. Его можно обучить на обычном ноутбуке за пару часов (если текст не слишком большой). Код был открыт и доступен всем.

Эволюция: Что стало дальше

На страницу:
4 из 7