Глава 6. Полусупервизорное и обучение с подкреплением

– Принципы обучения с подкреплением

– Q-Learning: примеры и применение

– Полусупервизорные подходы

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

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

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

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


Основные принципы обучения с подкреплением

Обучение с подкреплением (reinforcement learning, RL) – это подход в машинном обучении, при котором агент учится принимать решения, взаимодействуя с окружающей средой и получая за свои действия обратную связь в виде награды или наказания. Этот процесс напоминает обучение через опыт: агент предпринимает действия в определённой среде, получает результаты этих действий и на основе этих результатов корректирует свои дальнейшие действия.

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

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

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

Одной из важнейших проблем обучения с подкреплением является баланс между исследованием (exploration) и эксплуатацией (exploitation). Исследование заключается в том, чтобы пробовать новые действия, которые могут привести к более высоким наградам, даже если они не гарантируют немедленного успеха. Эксплуатация – это использование уже известных и успешных действий, которые обеспечивают более предсказуемый результат. Баланс между этими двумя подходами критичен, так как слишком большое количество исследования может привести к неэффективности, а слишком много эксплуатации – к застою и пропущенным возможностям для улучшения.

Для того чтобы агент мог учиться, ему нужно понимать, какие действия в каком состоянии среды приводят к наибольшей награде. Это связано с понятием "политики" (policy), которая представляет собой стратегию поведения агента: она определяет, какое действие должен выполнить агент в каждом возможном состоянии. Политика может быть детерминированной, когда для каждого состояния есть однозначное действие, или стохастической, когда агент с определённой вероятностью выбирает одно из нескольких возможных действий.

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

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

Давайте рассмотрим обучение с подкреплением на примере с использованием Python и библиотеки `gym`, которая предоставляет множество стандартных сред для тренировки алгоритмов обучения с подкреплением.

Мы будем использовать классический пример – задачу "CartPole", где цель состоит в том, чтобы агент удерживал столбик (cart) в вертикальном положении как можно дольше, балансируя на колесе, двигая его влево или вправо.

Шаг 1: Установка и импорт библиотек

Для начала установим нужные библиотеки. В случае использования Google Colab или Jupyter, это можно сделать через команду:

```bash

pip install gym

```

Затем импортируем все необходимые компоненты.

```python

import gym

import numpy as np

import random

import matplotlib.pyplot as plt

```

Шаг 2: Создание среды

Теперь создадим среду CartPole с помощью библиотеки `gym`.

```python

# Создаем среду

env = gym.make('CartPole-v1')

```

Шаг 3: Определение агента

В обучении с подкреплением важным моментом является создание агента, который будет принимать решения, основываясь на текущем состоянии среды. Агент должен выбрать действие на основе текущего состояния. Для простоты давайте реализуем случайный агент, который будет случайным образом выбирать действия, чтобы исследовать пространство.

```python

# Инициализация состояния среды

state = env.reset()

# Действия агента: 0 – двигаться влево, 1 – двигаться вправо

actions = [0, 1]

# Количество шагов

num_steps = 200

# Суммарная награда

total_reward = 0

# Сеанс игры с случайным агентом

for _ in range(num_steps):

action = random.choice(actions) # случайный выбор действия

next_state, reward, done, _, _ = env.step(action) # Выполняем действие

total_reward += reward

state = next_state # Переход к следующему состоянию

# Если агент упал (закончилась игра), завершаем

if done:

break

# Выводим итоговую награду

print(f"Total Reward: {total_reward}")

```

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

Шаг 4: Алгоритм Q-learning

Q-learning – это один из популярных методов обучения с подкреплением, который помогает агенту учиться на основе награды, которую он получает за выполнение определённого действия в каждом состоянии. Агент заполняет таблицу значений Q (ценности состояния-действия), которая описывает, насколько выгодно выполнить действие в конкретном состоянии.

Мы начнем с создания таблицы Q для всех состояний и действий. Сначала пространство состояний среды CartPole сильно большое и непрерывное, поэтому нам нужно будет дискретизировать его, чтобы работать с таблицей Q.

Шаг 5: Реализация алгоритма Q-learning

Пример реализации алгоритма Q-learning для задачи CartPole:

```python

# Устанавливаем параметры

learning_rate = 0.1 # Скорость обучения

discount_factor = 0.99 # Дисконтирование будущих наград

epsilon = 0.1 # Вероятность выбора случайного действия (исследование)

num_episodes = 1000 # Количество эпизодов обучения

# Инициализация Q-таблицы

# Преобразуем состояния в дискретные

def discretize_state(state):

discrete_state = [

int(state[0] // 0.1),

int(state[1] // 0.1),

int(state[2] // 0.1),

int(state[3] // 0.1)

]

return tuple(discrete_state)

# Размеры Q-таблицы (по оси состояния и действия)

q_table = np.zeros((6, 6, 6, 6, env.action_space.n)) # для CartPole (4 признака, 2 действия)

# Функция для выбора действия с учётом epsilon-greedy стратегии

def epsilon_greedy(state):

if random.uniform(0, 1) < epsilon:

return random.choice([0, 1]) # Случайный выбор

else:

return np.argmax(q_table[state]) # Лучшее действие по таблице Q

# Обучение агента

for episode in range(num_episodes):

state = discretize_state(env.reset()) # Начальное состояние, дискретизация

done = False

total_reward = 0

while not done:

action = epsilon_greedy(state) # Выбор действия

next_state, reward, done, _, _ = env.step(action) # Выполнение действия

next_state = discretize_state(next_state) # Дискретизация следующего состояния

# Обновление Q-значения по формуле Q-learning

q_table[state][action] = q_table[state][action] + learning_rate * (

reward + discount_factor * np.max(q_table[next_state]) – q_table[state][action]

)

state = next_state # Переход к новому состоянию

total_reward += reward

if episode % 100 == 0:

print(f"Episode {episode}/{num_episodes}, Total Reward: {total_reward}")

```

Шаг 6: Тестирование обученного агента

После того как агент обучился с использованием Q-learning, мы можем протестировать его эффективность. В тестировании агент будет следовать стратегии, основанной на максимизации ценности действия, и применять её без случайных выборов.

```python

# Тестирование агента

state = discretize_state(env.reset())

done = False

total_reward = 0

while not done:

action = np.argmax(q_table[state]) # Лучшее действие по таблице Q

next_state, reward, done, _, _ = env.step(action)

state = discretize_state(next_state) # Дискретизация следующего состояния

total_reward += reward

print(f"Total Reward in test: {total_reward}")

```

Результаты

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

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

Этот пример демонстрирует, как с помощью обучения с подкреплением можно обучить агента действовать в динамической среде, такой как CartPole. Метод Q-learning позволяет агенту улучшать свою стратегию со временем, учась на опыте, получая награды и корректируя свои действия, чтобы максимизировать долгосрочную награду.


Q-Learning

Q-Learning – это один из наиболее популярных и широко используемых алгоритмов в области обучения с подкреплением. Этот метод используется для поиска оптимальной стратегии или политики, позволяя агенту выбирать лучшие действия для максимизации долгосрочной награды.

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

Основные принципы работы Q-Learning

Q-learning использует так называемую Q-таблицу (или функцию), которая содержит оценку ценности (Q-значение) для каждого состояния и действия. Когда агент принимает какое-либо действие, он получает награду, которая используется для обновления значений в Q-таблице с использованием формулы:



Процесс обучения заключается в том, чтобы агент экспериментировал с действиями, получал награды, обновлял Q-значения и таким образом учился принимать более выгодные решения на основе опыта.

Применение Q-Learning

Q-learning применяется в широком спектре задач, где необходимо принять решение в динамично изменяющейся среде. Примеры применения включают:

1. Игры: Q-learning активно используется для создания агентов, которые обучаются играть в игры, например, в шахматы, го, видеоигры и т.д. Агент может играть в игру, экспериментировать с различными стратегиями и на основе полученных наград постепенно улучшать свои действия, становясь всё более эффективным игроком.

2. Робототехника: В робототехнике Q-learning применяется для обучения роботов, которые должны ориентироваться в пространстве, избегать препятствий, находить путь или выполнять другие сложные задачи. Например, робот может учиться, как эффективно двигаться по комнате, избегая столкновений.

3. Оптимизация бизнес-процессов: Q-learning используется для создания моделей, которые могут помогать оптимизировать такие процессы, как управление запасами, распределение ресурсов, маршрутизация, динамическое ценообразование и др.

4. Автономные транспортные системы: Агент может обучаться принимать решения о маршруте или действиях, чтобы минимизировать время в пути, избегать пробок или предсказывать поведение других участников движения.


Пример применения Q-Learning на задаче навигации

Предположим, что задача заключается в том, чтобы агент прошёл лабиринт. Лабиринт состоит из клеток, каждая из которых может быть либо пустой (свободной), либо содержать стену, которая блокирует движение. Агент должен научиться проходить лабиринт, начиная с одной клетки и двигаясь к цели. Каждое действие может быть направлено в одну из четырёх сторон: вверх, вниз, влево или вправо.

1. Инициализация: Агент начинает с инициализированной Q-таблицей, где значения всех состояний и действий равны нулю.

2. Выбор действия: В процессе обучения агент выбирает действие, используя стратегию ε-реже (ε-greedy). Это означает, что с вероятностью ε агент будет выбирать случайное действие (исследование), а с вероятностью 1-ε – наилучшее действие на основе текущих значений в Q-таблице (эксплуатация).

3. Получение награды: После выполнения действия агент получает награду (например, +1 за движение в пустую клетку и -1 за столкновение со стеной).

4. Обновление Q-таблицы: Агент обновляет значения в Q-таблице с использованием формулы Q-learning, учитывая полученную награду и наилучшую стратегию для следующего состояния.

5. Повторение: Агент повторяет процесс, взаимодействуя с окружающей средой, обновляя Q-таблицу, пока не достигнет цели или не выполнит достаточное количество шагов.

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

Пример кода Q-Learning для задачи CartPole

Давайте возьмём другую задачу для применения алгоритма Q-learning. Рассмотрим задачу Maze Navigation (навигация по лабиринту), где агент должен найти выход из лабиринта, начиная с одной клетки. Лабиринт состоит из клеток, и агент может двигаться вверх, вниз, влево или вправо. Задача будет заключаться в том, чтобы агент научился искать оптимальный путь к выходу, используя награды за правильные действия и штрафы за неправильные.

Описание задачи:

– Агент начинает в случайной точке лабиринта.

– Он должен найти путь к выходу, избегая стен.

– Если агент сталкивается со стеной, он получает отрицательную награду.

– Если агент достиг цели (выхода), он получает положительную награду.

Мы будем использовать Q-learning для обучения агента, где Q-значения будут обновляться в процессе взаимодействия агента с лабиринтом.

Пример кода для задачи навигации по лабиринту с использованием Q-Learning:

```python

import numpy as np

import random

# Параметры лабиринта

maze = [

[0, 0, 0, 0, 0],

[0, 1, 1, 0, 0],

[0, 0, 0, 1, 0],

[0, 1, 0, 0, 0],

[0, 0, 0, 1, 2]

]

# 0 – свободная клетка

# 1 – стена

# 2 – выход

# Размеры лабиринта

n_rows = len(maze)

n_cols = len(maze[0])

# Гиперпараметры Q-learning

learning_rate = 0.1 # Скорость обучения

discount_factor = 0.9 # Дисконтирование

epsilon = 0.2 # Эпсилон для epsilon-greedy

num_episodes = 1000 # Количество эпизодов обучения

# Инициализация Q-таблицы

q_table = np.zeros((n_rows, n_cols, 4)) # 4 действия: вверх, вниз, влево, вправо

actions = [(-1, 0), (1, 0), (0, -1), (0, 1)] # Действия: (изменение по строкам, изменение по столбцам)

# Функция выбора действия с использованием epsilon-greedy

def epsilon_greedy(state):

if random.uniform(0, 1) < epsilon:

return random.choice([0, 1, 2, 3]) # Случайное действие

else:

return np.argmax(q_table[state[0], state[1]]) # Лучшее действие по Q-таблице

# Функция проверки, находится ли клетка внутри лабиринта и является ли она свободной

def is_valid_move(state, action):

new_row = state[0] + actions[action][0]

new_col = state[1] + actions[action][1]

if 0 <= new_row < n_rows and 0 <= new_col < n_cols and maze[new_row][new_col] != 1:

return True

return False

# Обучение

for episode in range(num_episodes):

state = (0, 0) # Начальное состояние (агент стартует в верхнем левом углу)

done = False

total_reward = 0

while not done:

action = epsilon_greedy(state) # Выбор действия

if is_valid_move(state, action):

next_state = (state[0] + actions[action][0], state[1] + actions[action][1])

else:

next_state = state # Если движение невозможно, остаемся на месте

# Получение награды

if maze[next_state[0]][next_state[1]] == 2:

reward = 100 # Если агент достиг выхода, награда

done = True

elif maze[next_state[0]][next_state[1]] == 1:

reward = -10 # Если агент столкнулся со стеной, штраф

else:

reward = -1 # Пустая клетка, небольшая отрицательная награда для побуждения к поиску выхода

# Обновление Q-таблицы

q_table[state[0], state[1], action] = q_table[state[0], state[1], action] + learning_rate * (

reward + discount_factor * np.max(q_table[next_state[0], next_state[1]]) – q_table[state[0], state[1], action]

)

state = next_state # Переход к следующему состоянию

total_reward += reward

if episode % 100 == 0:

print(f"Episode {episode}/{num_episodes}, Total Reward: {total_reward}")

# Тестирование обученной модели

state = (0, 0)

done = False

total_reward = 0

steps = []

while not done:

action = np.argmax(q_table[state[0], state[1]]) # Лучшее действие по Q-таблице

if is_valid_move(state, action):

next_state = (state[0] + actions[action][0], state[1] + actions[action][1])

else:

next_state = state

# Получение награды

if maze[next_state[0]][next_state[1]] == 2:

reward = 100

done = True

elif maze[next_state[0]][next_state[1]] == 1:

reward = -10

else:

reward = -1

state = next_state

total_reward += reward

steps.append(state)

print(f"Test Total Reward: {total_reward}")

print("Optimal path to the exit:")

print(steps)

```

Объяснение шагов кода:

1. Определение лабиринта: Лабиринт задан двумерным массивом, где 0 – это свободная клетка, 1 – стена, а 2 – выход. Агент должен найти путь из верхнего левого угла к выходу, избегая стен.

2. Инициализация Q-таблицы: Мы создаём Q-таблицу размером ( n_{text{rows}} times n_{text{cols}} times 4 ), где 4 – это количество возможных действий (вверх, вниз, влево, вправо).

3. epsilon-greedy стратегия: Агент выбирает действие с использованием ε-стратегии. С вероятностью ε агент выбирает случайное действие (для исследования), а с вероятностью 1 – ε выбирает наилучшее действие (по текущим значениям в Q-таблице).

4. Обновление Q-таблицы: После выполнения действия агент получает награду. Если он дошёл до выхода, он получает большую положительную награду. Если он столкнулся с стеной, то получит штраф. Для других клеток даётся небольшая отрицательная награда, чтобы побудить агента искать выход. Q-таблица обновляется с учётом полученной награды и наилучшей стратегии для следующего состояния.

5. Тестирование: После обучения агент проходит через лабиринт, следуя оптимальной стратегии, которая была извлечена из обученной Q-таблицы.

Результаты

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

Q-learning – это метод, который позволяет агентам учиться принимать оптимальные решения в различных средах, используя опыт. Он подходит для множества задач, начиная от игр и робототехники и заканчивая оптимизацией бизнес-процессов и управления.


Полусупервизорные подходы

Полусупервизорное обучение – это метод машинного обучения, который сочетает в себе как размеченные, так и неразмеченные данные. В отличие от традиционного супервизорного обучения, где все данные имеют метки (цели), и несупервизорного обучения, где метки отсутствуют, полусупервизорное обучение позволяет использовать как небольшую часть размеченных данных, так и большое количество неразмеченных. Этот подход особенно полезен, когда получение меток для данных является дорогим или трудоемким процессом, а неразмеченные данные доступны в большом объеме.

Основные идеи полусупервизорного обучения

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

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

Применение полусупервизорных методов

1. Классификация изображений: В области компьютерного зрения полусупервизорные методы широко применяются для задач классификации, где имеются тысячи или миллионы изображений, но только малая часть из них аннотирована. Например, можно использовать неразмеченные изображения для улучшения классификации животных или объектов, добавляя структуру в обучающий процесс.

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

3. Обработка биологических данных: В биоинформатике, например, для анализа генетических данных, получение меток может быть дорогим, но большие объемы неразмеченных данных могут быть использованы для обучения моделей, например, для предсказания структур белков или поиска новых биологических закономерностей.

Подходы в полусупервизорном обучении

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

2. Методы самонаблюдения: Самонаблюдение – это подход, при котором модель обучается не только на метках, но и на структуре самих данных. Например, можно применять самообучающиеся алгоритмы, которые используют автоматическое помечание неразмеченных данных с помощью модели, а затем с использованием этих "прогнозированных" меток дообучают модель. Например, модель, которая учит себя классифицировать текстовые фрагменты, генерируя свои собственные метки.

3. Методы на основе обучения с регуляциями: В таких подходах для использования неразмеченных данных применяются методы, которые вводят дополнительные ограничения или регуляризаторы, чтобы гарантировать, что полученные гипотезы на основе размеченных и неразмеченных данных являются согласованными. Например, модель может быть обучена на размеченных данных с добавлением регуляризаторов, чтобы она лучше обобщалась на неразмеченные данные, поддерживая определенную структурную целостность.

4. Генеративные модели: Генеративные модели, такие как вариационные автоэнкодеры (VAE) или генеративные состязательные сети (GAN), могут использоваться для полусупервизорного обучения, позволяя моделям изучать скрытую структуру в данных. Генеративные подходы могут создать обучающие примеры, которые затем используются для обучения классификаторов.

Пример: Полусупервизорное обучение с использованием метода обучения с самонаблюдением

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

Пример простого кода для этой задачи:

```python

import numpy as np

from sklearn.datasets import fetch_20newsgroups

from sklearn.model_selection import train_test_split

from sklearn.naive_bayes import MultinomialNB

from sklearn.feature_extraction.text import CountVectorizer

# Загрузка данных

newsgroups = fetch_20newsgroups(subset='all')

X = newsgroups.data

y = newsgroups.target

# Разделение данных на размеченные и неразмеченные

X_train, X_unlabeled, y_train, _ = train_test_split(X, y, test_size=0.9, random_state=42)

# Преобразование текста в числовые признаки

vectorizer = CountVectorizer(stop_words='english')

X_train_vec = vectorizer.fit_transform(X_train)

X_unlabeled_vec = vectorizer.transform(X_unlabeled)

# Инициализация модели

model = MultinomialNB()

# Обучение модели на размеченных данных

model.fit(X_train_vec, y_train)

# Прогнозирование для неразмеченных данных

pseudo_labels = model.predict(X_unlabeled_vec)

# Добавление неразмеченных данных с прогнозированными метками в обучающий набор

X_train_combined = np.vstack([X_train_vec.toarray(), X_unlabeled_vec.toarray()])

y_train_combined = np.hstack([y_train, pseudo_labels])

# Дополнительное обучение модели с расширенным набором данных

model.fit(X_train_combined, y_train_combined)

# Оценка качества

accuracy = model.score(X_train_combined, y_train_combined)

print(f'Accuracy: {accuracy:.4f}')

```

Объяснение кода:

1. Загрузка данных: Мы используем набор данных 20 Newsgroups, который содержит текстовые данные, относящиеся к различным новостным группам.

2. Разделение на размеченные и неразмеченные данные: Мы разделяем данные на размеченные (10%) и неразмеченные (90%) данные.

3. Прогнозирование меток для неразмеченных данных: Сначала мы обучаем модель на размеченных данных и используем её для предсказания меток для неразмеченных данных (псевдонаметки).

4. Перенос обучения на расширенный набор: Модель дообучается, используя данные с псевдонаметками, что помогает улучшить её обобщающие способности.

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

Загрузка...