Митасов Андрей Павлович :
другие произведения.
Металоция неведомого. Модуль Т. Тренинг
Самиздат:
[
Регистрация
] [
Найти
] [
Рейтинги
] [
Обсуждения
] [
Новинки
] [
Обзоры
] [
Помощь
|
Техвопросы
]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
Комментарии: 1, последний от 31/03/2024.
© Copyright
Митасов Андрей Павлович
(
apm@tut.by
)
Размещен: 31/03/2024, изменен: 08/12/2024. 1138k.
Статистика.
Эссе
:
Философия
,
Естествознание
,
Изобретательство
Металоция неведомого
Иллюстрации/приложения: 12 шт.
Скачать
FB2
Ваша оценка:
не читать
очень плохо
плохо
посредственно
терпимо
не читал
нормально
хорошая книга
отличная книга
великолепно
шедевр
Аннотация:
Выжимка информации из Инета по глубокому обучению нейросетей.
Предварительный анализ.
Крайнее изменение 08.12.2024
"Мы все учились понемногу
Чему-нибудь и как-нибудь..."
Александр сергеевич Пушкин - "Евгений Онегин".
Оглавление:
Вместо предисловия.
Начинаем с "азов".
"Повторение мать учения".
Погружение в математику "обратного распространения".
"Звонок другу".
Маленькие улучшения backpropagation.
Пара бит про "переобучение".
Каноническая трактовка регуляризации.
Попытка неканонической трактовки регуляризации. Часть 1.
Таинства подбора гиперпараметров обучения нейросетей.
Магия аппроксимации любой функции нейросетью.
Попытка неканонической трактовки регуляризации. Часть 2.
"Некоторые" сложности глубокого обучения.
Пример глубокого обучения сверточной нейросети.
Финальные аккорды учебника по глубокому обучению.
Информация к размышлению:
Иллюстрация реального уровня понимания работы нейронок и регуляризации.
Обучение нейросетей с помощью "дистилляции" знаний.
Пример обучения нейросети "от входа к выходу".
Самообучение и обратное распространение влияния.
"Подводные камни" регуляризации.
"Ударим гроккингом по бездорожью", то бишь, "бездумности" нейросетей.
Традиционные методы ускорения обучения нейросетей.
"Немного" об аугментация изображений.
Обучение графа знаний.
Обзор фундаментального "талмуда" по глубокому обучению.
Иллюстрации:
Тральщик "Наставник" от "Модели Kandinsky 2.1".
Тральщики "Наставник" от "Модели Kandinsky 3.0".
"Обучение трансформеров" от Copilot.
Тральщик "Наставник" от "Модели Kandinsky 3.01".
Визуализация обучения нейронок от kraidiky.
Тральщик "Наставник" от "Модели Kandinsky 3.1".
========
29.03.2024 21:41
Вместо предисловия.
В оглавление.
Какое бы ни было бы отношение к нынешнему ажиотажу вокруг больших и малых нейросетей,
одно можно сказать совершенно определенно:
методы "машинного обучения" доказали свою работоспособность
в решении большого класса самых разнообразных задач.
Естественно, до какого-то "идеала" или "универсальной отмычки"
им еще достаточно далеко, но и то что достижимо сейчас по-настоящему поражает.
Поэтому имеет смысл разобраться за счет чего это получается,
и какие перспективы есть в плане повышения их эффективности.
Для меня это еще и давно откладываемая "до лучших времен" тема
по собственному обучению и проработки вопросов в области понимания ИИ-систем.
Так уж совпало, что практически одновременно сразу "несколько звезд сошлись"
на этом "ИИ-небосклоне".
Сначала это была гипотеза о "концептуальном пространстве эмбеддингов", см:
"Заковыристая" структура вектора эмбеддинга."
"Каково же оно "пространство эмбеддингов" нейронки?"
Разработка которой привела к формированию отдельного модуля:
"Металоция неведомого. Модуль Э. Эмбеддинги."
При написании которого, оформилась, в "первом чтении",
концепция битовых нейронных сетей (БНС), см.:
"Первая попытка сформулировать концепцию битовой нейронной сети (БНС)".
И что интересно, в какой-то момент дальнейшее развитие этих направлений,
так или иначе начинало явно тормозиться отсутствием какой-то ясности
в понимании того как происходит процесс обучения нейросетей
"не в принципе, а в кожухе".
А еще зудящей "занозой" висел один непонятный вопрос из "обучения с подкреплением"
о какой-то чудовищной неэффективности использования в этой технологии
метода обучения "обратным распространением ошибки",
этого поистине "золотого молотка" всего "машинного обучения" глубоких нейросетей.
Т.е. общее представление как работает этот метод у меня естественно есть,
но вот как увязать "особенности" этого метода, со всеми теми "непонятками",
которые постоянно возникали, при попытках какого-то более глубокого понимания
работы различных архитектур нейросетей как-то не возникало.
Так что, желание разобраться в этой теме возникло достаточно давно,
но как-то все не получалось найти какую-то "точку опоры" для такой работы.
И вот наконец-то я получил от Copilot ссылку на достаточно "древний",
но весьма актуальный и по сей день очень фундаментальный материал на эту тему.
И я решил проработать его максимально основательно.
Так что этот модуль, во всяком случае, в начале представляет
мой личный конспект проработки темы "метода обратного распространения ошибки"
с "пометками на полях", отражающими мое сегодняшнее понимание этой темы.
В дальнейшем хочется и другие методы "машинного обучения" нейросетей
проработать также основательно. Но это пока очень отдаленные планы.
А пока это попытка разбора и анализа "обратного распространения"
максимально внимательно и подробно.
Не все там так просто, как может по первоначалу показаться.
И дело даже не в формулах, а в самих концепциях и деталях их реализации.
"Обучение трансформеров методом обратного распространения ошибки"
Создано с помощью искусственного интеллекта Copilot на платформе DALL? E 3.
========
23.03.2024 16:31
Начинаем с "азов".
В оглавление.
Итак начинаем глубокое погружение в метод "обратного распространения ошибки",
- backpropagation -
"священный грааль" сегодняшнего машинного обучения нейросетей.
Сначала, как и полагается, "тренировочный заплыв" с "азов"
по более простому, но от этого не менее интересному материалу:
"Простейшая нейросеть: еще раз и подробнее".
Автор: nulovkin
https://habr.com/ru/articles/714988/
.
6 фев 2023 в 10:00
//// Начало цитирования.
Введение
Некоторое время назад, во время учебы в институте,
я решил понять принцип работы нейросетей.
Усвоить его на уровне, необходимом,
чтобы написать небольшую нейросеть самостоятельно.
Начать я решил с книги Тарика Рашида "Создай свою нейросеть".
Эта статья представляет из себя краткий конспект этой книги для тех,
кто, как и я, столкнулся с трудностями во время изучения этой темы
и этого учебника (не в последнюю очередь благодаря проблемам редактуры).
В процессе я надеюсь разложить все по полочкам еще раз.
Предположу, что перемножение матриц и взятие производной
никого из читателей не смутят и сразу пойду дальше.
Итак, машинное обучение это незаменимый инструмент для решения задач,
которые легко решаются людьми, но не классическими программами.
Ребенок легко поймет, что перед ним буква А, а не Д,
однако программы без помощи машинного обучения справляются с этим
весьма средне.
И едва ли вообще справляются при минимальных помехах.
Нейросети же уже сейчас решают многие задачи (включая эту)
намного лучше людей.
Их способность обучаться на примерах
и выдавать верный результат поистине очаровывает,
однако за ней лежит простая математика
и сейчас я покажу это на примере перцептрона.
Описание работы нейронов
Рис. Перцептрон с тремя слоями по три нейрона
Каждый нейрон (или узел) принимает сигналы от узлов предыдущего слоя
и передает на следующий.
Каждая связь между нейронами имеет собственный вес.
Таким образом, входной сигнал узла 1 слоя 1 передается
на узел 1 слоя 2 с коэффициентом w_{11},
на узел 2 слоя 2 с коэффициентом w_{12}и так далее.
Все сигналы, полученные узлом уровня 2 складываются.
//// Вот это "складывается" и есть основная/ключевая идея перцептрона
//// и, возможно, большинства нейросетевых архитектур.
//// Во всяком случае этот "inductive bias" лежит в основе
//// не только многих архитектурных решений в нейросетях,
//// но и ключевого меnода обучения - "обратного распространения ошибок".
//// Надеюсь, это удастся показать максимально наглядно,
//// если и не в этом материале, то в последующих.
Это его входной сигнал.
Таким образом сигналы передаются с уровня на уровень, до выхода.
Для того, чтобы результат был более предсказуемым,
используется функция сглаживания,
одна из самых популярных - сигмоида y=1/(1+e^-x).
Рис. Сигмоида y=1/(1+e^-x)
Если каждый узел обрабатывает поступивший сигнал функцией сглаживания,
то можно быть полностью уверенным,
что он не выйдет за пределы от 0 до 1.
Таким образом, нейрон суммирует входные сигналы,
умноженные на веса связей,
берет сигмоиду от результата и подает на выход.
Рис. Схема узла
Еще раз, для всего слоя:
А как это решает задачу?
Итак, как же применить нейросеть для распознавания букв на картинке?
Входным сигналом для этой картинки 28 на 28 будет последовательность
из 784 чисел от 0 до 255,
каждое из которых шифрует цвет соответствующего пикселя.
Итак, на входном уровне должно быть 784 узла.
Информация, которую нам необходимо получить на выходе
это "какая цифра скорее всего на картинке".
Всего 10 вариантов.
Значит, на выходном уровне будет 10 узлов.
Узел, на котором сигнал будет больше
и будет ответом нейросети на задачу
- например, для этой картинки в идеале все узлы выходного уровня
должны показывать на выходе ноль, а пятый - единицу.
Добавим еще уровень, чтобы переход не был таким резким.
Допустим, нейросеть будет из трех слоев - 784, 100 и 10 узлов.
Общепринятого метода выбора точного количества узлов на промежуточных слоях
и количества самих промежуточных слоев не существуют
//// Сколько лет прошло с момента разработки этой и подобной архитектур,
//// просмотрены наверно тысячи вариантов, а более-менее точных закономерностей
//// пока не обнаружено. Есть какие-то общие рекомендации,
//// и не похоже что ситуация в ближайшее время как-то изменится.
//// Похоже, большинство с этим смирилось.
//// Это как раз тот случай, когда математика "бессильна",
//// и рулит чистая "эвристика".
- разве что проводить эксперименты, и сравнивать результаты.
В нашем случае первый уровень представляет пиксели входного изображения,
третий - распознанные цифры
а второй
каким-то трудноотслеживаемым образом
представляет закономерности, подмножества пикселей,
которые свойственны разным цифрам.
Добавим матрицы
Переведем правила распространения сигнала на язык математики.
Задача получить сигналы нового слоя,
то есть "Умножить вес каждого узла слоя 1 на его выходную связь,
ведущую к узлу слоя 2
и сложить"
на удивление сильно подходит на описание умножения матриц.
В самом деле, расположим в каждом столбце матрицы весов веса связей,
исходящих из одного узла
и умножим справа на столбец входных сигналов
и получим выходной сигнал этого слоя в столбце получившейся матрицы.
Рис. Получение сигнала следующего уровня по формуле X = W*I
В строках же матрицы весов будут веса связей,
ведущих в один узел нового слоя,
каждый из которых умножается на вес порождающего его узла.
Очень изящно!
Разумеется, из-за правил перемножения матриц
высота конечного столбца будет равна высоте матрицы весов,
а высота матрицы входных сигналов -- ширине матрицы весов.
Для перехода из первого слоя (784 узла) во второй (100 узлов)
в матрице весов нашей задачи понадобится таблица в 100 строк и 784 столбца.