tariel.ge › Полезное: бесплатные книги › ИИ изнутри: от нейрона до своей моделиБесплатно · автор Тариел Бежанидзе
← ИИ изнутри ЛИСТ 03ФундаментРЕВ. 1
Глава 03 · Фундамент

Сеть: слои, веса и откуда берутся миллиарды

Один нейрон проводит прямую. Слой нейронов ищет признаки. Стопка слоёв строит признаки из признаков — и отсюда берётся всё остальное.

Слой

Слой — это просто несколько нейронов, которые смотрят на одни и те же входы, но с разными весами. Каждый ищет своё.

слой из четырёх нейронов на трёх входах
              ┌─ нейрон 1 → «напряжение просело»
вход x₁ ──┬───┼─ нейрон 2 → «пульсации выше нормы»
вход x₂ ──┼───┼─ нейрон 3 → «греется»
вход x₃ ──┴───└─ нейрон 4 → «всё в допуске»

каждый видит все входы, но у каждого свои веса

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

Глубина: признаки из признаков

Второй слой смотрит уже не на исходные данные, а на выводы первого. Третий — на выводы второго. С каждым слоем абстракция растёт.

СлойЧто выделяет в фотографии платы
1Границы яркости: где светлое сменяется тёмным
2Линии и углы: из границ складываются отрезки
3Простые формы: прямоугольники, круги, дорожки
4Детали: корпус конденсатора, ножки микросхемы
5Сборки: узел питания, выходной каскад
6Ответ: «вздутый конденсатор в фильтре питания»
Почему это работает именно так

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

Откуда миллиарды

Считается просто. Между соседними слоями каждый нейрон связан с каждым, то есть число весов — это произведение размеров слоёв.

арифметика параметров
слой из 1000 нейронов → слой из 1000 нейронов
= 1 000 × 1 000 = 1 000 000 весов   (один переход!)

языковая модель: ширина слоя ~4096, слоёв ~32, плюс внимание

итог: миллиарды. Отсюда «7B», «14B», «70B».
Что это значит на вашем железе

Каждый параметр надо хранить и умножать. Модель 7B в сжатии Q4 — это около 4,7 ГБ, которые должны лежать в видеопамяти. У вас 16 ГБ: спокойно помещается 14B, впритык 32B в сильном сжатии. Отсюда прямая связь между «миллиарды параметров» и «что реально запустится».

Разные формы связей

«Каждый с каждым» — не единственный вариант, и для разных данных придуманы разные схемы.

ТипИдеяДля чего
ПолносвязныйКаждый с каждымУниверсально, но дорого. Внутри всех остальных
СвёрточныйМаленькое окно скользит по картинке, веса общиеИзображения. Экономит параметры в сотни раз
РекуррентныйВыход подаётся обратно на входПоследовательности. Сейчас почти вытеснен
ВниманиеКаждый элемент решает, на какие другие смотретьТекст, и не только. Глава 08
Почему свёртка так важна для картинок

Угол остаётся углом в любом месте кадра. Значит незачем учить отдельный детектор угла для каждой точки изображения — достаточно одного набора весов, который применяется везде. Это называется разделением весов, и именно оно сделало распознавание изображений реальным. Та же идея внутри моделей, генерирующих картинки — глава 14.

Две детали, без которых глубокие сети не обучались

Остаточные связи

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

Обходной путь даёт ошибке «короткую дорогу» назад. Именно это позволило перейти от десятков слоёв к сотням, и это есть в каждом современном трансформере.

Нормализация

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

Аналогия

Это как согласование уровней между каскадами усилителя. Не согласовали — либо перегруз, либо сигнал утонул в шуме. Нормализация делает ровно это: держит рабочую точку каждого слоя в разумном диапазоне.

Чем занята память при работе

ЧтоСколькоКогда
Веса моделиОсновной объёмВсегда, пока модель загружена
АктивацииЗависит от длины входаВо время прохода
Кэш контекстаРастёт с длиной диалогаВ языковых моделях
Градиенты и состояния оптимизатораВ разы больше самих весовТолько при обучении
Почему обучать намного тяжелее, чем запускать

При обучении кроме весов надо хранить градиенты и служебные состояния оптимизатора — обычно втрое-вчетверо больше памяти, чем занимает сама модель. Поэтому на 16 ГБ вы спокойно запускаете 14B, но обучать её целиком не сможете. Выход — LoRA, которая обучает крошечную добавку вместо всей модели. Глава 13.

Проверьте, что поняли

Что дальше

Самое интересное: как именно подбираются эти миллиарды чисел. Оказывается, довольно простым приёмом.

Глава03 — Сеть: слои, веса и откуда берутся миллиарды
БлокФундамент
Далее04 — Как сеть находит веса: ошибка, градиент, шаг
Ревизия1
↑ Оглавление Предыдущая глава← 02 · Нейрон: три операции, из которых состоит всё Следующая глава04 · Как сеть находит веса: ошибка, градиент, шаг →

Бесплатная книга · tariel.ge · версии инструментов и команды проверяйте в документации проектов

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.