Нихиль Будума - Основы глубокого обучения

Тут можно читать онлайн Нихиль Будума - Основы глубокого обучения - бесплатно ознакомительный отрывок. Жанр: Экономика, издательство Манн, Иванов и Фербер, год 2020. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Основы глубокого обучения
  • Автор:
  • Жанр:
  • Издательство:
    Манн, Иванов и Фербер
  • Год:
    2020
  • Город:
    Москва
  • ISBN:
    9785001464723
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Нихиль Будума - Основы глубокого обучения краткое содержание

Основы глубокого обучения - описание и краткое содержание, автор Нихиль Будума, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Глубокое обучение — раздел машинного обучения, изучающий глубокие нейронные сети и строящий процесс получения знаний на основе примеров. Авторы рассказывают об основных принципах решения задач в глубоком обучении и способах внедрения его алгоритмов.

Основы глубокого обучения - читать онлайн бесплатно ознакомительный отрывок

Основы глубокого обучения - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Нихиль Будума
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Когда дело доходит до выборки из таблицы, можно обратиться к sample_batch(self, batch_size) для случайной компоновки пакета:

class ExperienceReplayTable(object):

def __init__(self, table_size=5000):

self.states = []

self.actions = []

self.rewards = []

self.state_primes = []

self.discounted_returns = []

self.table_size = table_size

def add_episode(self, episode):

self.states += episode.states

self.actions += episode.actions

self.rewards += episode.rewards

self.discounted_returns += episode.discounted_returns

self.state_primes += episode.state_primes

self.purge_old_experiences()

def purge_old_experiences(self):

if len(self.states) > self.table_size:

self.states = self.states[-self.table_size:]

self.actions = self.actions[-self.table_size:]

self.rewards = self.rewards[-self.table_size:]

self.discounted_returns = self.discounted_returns[

— self.table_size:]

self.state_primes = self.state_primes[

— self.table_size:]

def sample_batch(self, batch_size):

s_t, action, reward, s_t_plus_1, terminal = [], [], [], [], []

rands = np.arange(len(self.states))

np.random.shuffle(rands)

rands = rands[: batch_size]

for r_i in rands:

s_t.append(self.states[r_i])

action.append(self.actions[r_i])

reward.append(self.rewards[r_i])

s_t_plus_1.append(self.state_primes[r_i])

terminal.append(self.discounted_returns[r_i])

return np.array(s_t), np.array(action),

np.array(reward), np.array(s_t_plus_1),

np.array(terminal)

Основной цикл DQN

Сведем всё воедино в основной функции, которая создаст среду OpenAI Gym для Breakout, выведет образец DQNAgent и заставит его взаимодействовать со средой и успешно обучаться игре в Breakout:

def main(argv):

# Configure Settings (Конфигурируем настройки)

run_index = 0

learn_start = 100

scale = 10

total_episodes = 500*scale

epsilon_stop = 250*scale

train_frequency = 4

target_frequency = 16

batch_size = 32

max_episode_length = 1000

render_start = total_episodes — 10

should_render = True

env = gym.make(‘Breakout-v0')

num_actions = env.action_space.n

solved = False

with tf.Session() as session:

agent = DQNAgent(session=session,

um_actions=num_actions)

session.run(tf.global_variables_initializer())

episode_rewards = []

batch_losses = []

replay_table = ExperienceReplayTable()

global_step_counter = 0

for i in tqdm.tqdm(range(total_episodes)):

frame = env.reset()

past_frames = [frame] * (agent.history_length-1)

state = agent.process_state_into_stacked_frames(

frame, past_frames, past_state=None)

episode_reward = 0.0

episode_history = EpisodeHistory()

epsilon_percentage = float(min(i/float(

epsilon_stop), 1.0))

for j in range(max_episode_length):

action = agent.predict_action(state,

epsilon_percentage)

if global_step_counter < learn_start:

action = random_action(agent.num_actions)

# print(action)

frame_prime, reward, terminal, _ = env.step(

action)

state_prime =

agent.process_state_into_stacked_frames(

frame_prime, past_frames,

past_state=state)

past_frames.append(frame_prime)

past_frames = past_frames[-4:]

if (render_start > 0 and (i >

render_start)

and should_render) or (solved and

should_render):

env.render()

episode_history.add_to_history(

state, action, reward, state_prime)

state = state_prime

episode_reward += reward

global_step_counter += 1

if j == (max_episode_length — 1):

terminal = True

if terminal:

episode_history.discounted_returns =

discount_rewards(

episode_history.rewards)

replay_table.add_episode(episode_history)

if global_step_counter > learn_start:

if global_step_counter %

train_frequency == 0:

s_t, action, reward, s_t_plus_1,

terminal = \

replay_table.sample_batch(

batch_size)

q_t_plus_1 = agent.target_q.eval(

{agent.target_s_t:

s_t_plus_1})

terminal = np.array(terminal) + 0.

max_q_t_plus_1 = np.max(q_t_plus_1,

axis=1)

target_q_t = (1. — terminal) * \

agent.gamma * max_q_t_plus_1 +

reward

_, q_t, loss = agent.session.run(

[agent.train_step, agent.q_t,

agent.loss], {

agent.target_q_t: target_q_t,

agent.action: action,

agent.s_t: s_t

})

if global_step_counter %

target_frequency == 0:

agent.update_target_q_weights()

episode_rewards.append(episode_reward)

break

if i % 50 == 0:

ave_reward = np.mean(episode_rewards[-100:])

print(ave_reward)

if ave_reward > 50.0:

solved = False

else:

solved = False

Результаты DQNAgent в Breakout

Мы обучаем DQNAgent на 1000 эпизодах и рассматриваем кривую обучения. Чтобы достичь на Atari результатов выше, чем у человека, обычно время обучения растягивается на несколько дней. Но общая восходящая тенденция в вознаграждениях проявляется быстро, что показано на рис. 9.7.

Рис 97 Агент DQN показывает все более успешные результаты в Breakout во - фото 258

Рис. 9.7. Агент DQN показывает все более успешные результаты в Breakout во время обучения, усвоив хорошую функцию-значение, и действует все менее случайно благодаря ϵ-жадной нормализации

Улучшение и выход за пределы DQN

* * *

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

Глубокие рекуррентные Q-сети (DRQN)

Помните предположение Маркова — что следующее состояние зависит только от предыдущего и действия агента? Решение Маркова при помощи DQN, при котором четыре последовательных кадра помещаются в стек как отдельный канал, просто обходит проблему и во многом напоминает инженерную уловку. Почему кадров четыре, а не десять? Этот искусственный гиперпараметр ограничивает обобщающую способность модели. Как работать с произвольными последовательностями взаимосвязанных данных? Можно воспользоваться тем, что мы узнали в главе 6о рекуррентных нейронных сетях, для моделирования последовательностей при помощи глубоких рекуррентных Q-сетей (DRQN).

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

DRQN даже расширили, включив нейронный механизм внимания, о чем говорится в работе Ивана Сорокина и коллег «Глубокие рекуррентные Q-сети с вниманием; DAQRN» 2015 года [106]. Поскольку DRQN работает с последовательностью данных, она может уделять внимание конкретным ее фрагментам. Такая способность концентрироваться на деталях и повышает эффективность, и обеспечивает интерпретируемость модели, создавая логическое обоснование для предпринимаемых действий.

DRQN оказалась лучше, чем DQN, в играх-«стрелялках» от первого лица, например DOOM [107], а также продемонстрировала лучшие результаты в некоторых играх Atari с длинными временными зависимостями, например Seaquest [108].

Продвинутый асинхронный агент-критик (A3C)

Продвинутый асинхронный агент-критик (Asynchronous advantage actor-critic , A3C) — новый подход к глубокому обучению с подкреплением, представленный в DeepMind 2016 года «Асинхронные методы глубокого обучения с подкреплением» [109]. Поговорим о том, что это и в чем его преимущества перед DQN.

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

A3C использует метод агента-критика [110]. Он заключается в обучении как функции ценностей V(s t) — критик, так и стратегии π ( s t ) — агент. В этой главе мы выделили два разных подхода: обучение ценности и обучение стратегии. В A3C сочетаются сильные стороны обоих: функция ценностей критика улучшает стратегию агента.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Нихиль Будума читать все книги автора по порядку

Нихиль Будума - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Основы глубокого обучения отзывы


Отзывы читателей о книге Основы глубокого обучения, автор: Нихиль Будума. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x