Files
obsidian/Programming/ML/Структура обучения.md
2026-07-30 11:35:10 +05:00

53 lines
6.3 KiB
Markdown

Обучение строится на данных, которые мы используем, и бывает нескольких типов:
***1. Обучение с учителем*** - мы размечаем данные, т.е к самим данным прикрепляем то, что мы хотим что бы нейросеть нам выдавала.
***2. Обучение без учителя***
***3. Обучение с подкреплением***
| **Обучение с учителем** | **Обучение без учитея** |
| :---------------------: | :----------------------------------------: |
| регрессия | генеративно-состязательная нейросеть (GAN) |
| классификация | |
| сегментация | |
| генерация текста | |
### Какие задачи можно решать при обучении с учителем?
| **Задача регресии** | **задача классификации** |
| ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| на выходе получаем информацию,<br>которая не связана друг с другом,<br>например координаты глаз на картинке<br>[350,290] | на выходе получаем вероятность пренадлежности к классу,<br>например при классификации кошек и <br>собак [0.01, 0.99], где 0.01 - вероятность что это собака, а 0.99 - что кот |
## Этапы обучения
### 1. Подготовка данных
Данные сначала необходимо ***преобразовать*** (обычно имеется ввиду ***нормализация*** - преобразование данных к неким безмерным еденицам, диапазон которых задается, например [0;1] или [-1;1] . Фактически до нормализации данные имеют меру, например в датасете в разных колонках содержится информация о длине дороги и градусах ее искривлениях. ). После преобразования идет разбиение датасета на части:
***1. Обучение*** - примерно 80% исходного датасета нормализуется и используется для обучения модели. Далее разбиваем датасет на части - **тренировочная** и **валидационная**. На тренировочной учим, на валидационной - проверяем действительно ли учились или делали вид что учились.
***2. Тестирование*** - оставшиеся 20% остаются для тестирования обученной модели.
Фактически, размер соотношение Обучения/Тестирования может меняться от датасета к датасету, тут необходимо на личном опыте определить необходимую пропорцию.
***ПРО ТЕСТОВЫЕ ДАННЫЕ ДО КОНЦА ОБУЧЕНИЯ МЫ ЗАБЫВАЕ М И НЕ ТРОГАЕМ ИХ ВООБЩЕ***
### 2. Построение модели
Фактически необходимо определить количество слоёв модели, а так же написать главные функции.:
***1. Функция потерь*** - она буквлаьно определяет, какую задачу решает нейронная сеть
***2. Метод оптимизации градиентного спуска*** - отвечает за обучение и его скорость.
### 3. Тренировка модели
***1. Тренировка модели*** - используем часть датасета для обучения (**train set**)
***2. Валидация модели*** - используем часть датасета для валидации (проверки качества обучения) (**val set**)
Тренировка это:
***1. Подача данных из датасета в модель***
***2. Подача полученных ответов и реальных ответов в функцию потерь для сравнения***
***3. Обратное распространение ошибки*** - узнаём как и на сколько сильно влияет каждый вес на ошибку
***4. Корректировка весов***
Валидация:
***1. Подача валиадционных данных***
***2. Подача полученных значений и реальных значений в функцию потерь***
***3. Анализ функции потерь***
***Эпоха*** - одна итерация Тренировки и Валидации. Их может быть сколько угодно.
### 4. Тестирование
***1. Подача тестовых данных***
***2. Подача полученных значений и реальных значений в функцию потерь***
***3. Анализ функции потерь***
Отличие от валидации в том, что данные тестирования нейронка не видела, и фактически результат функции потерь на тестовых данных и будет результатом обучения.