zoukankan      html  css  js  c++  java
  • 使用DQN实现AI自动玩FlappyBird

    DQN是强化学习的系列方法之一。

    这里简单介绍一下强化学习,强化学习是以一种不断“试错”的方式,通过与环境的交互获得的奖赏指导行为,从而使模型获得最大化奖赏,由于外部环境提供的强化信号仅仅是对模型动作的一种评价,强化学习必须靠自身的经历进行学习,通过这种方式,模型得以从行动-评价的环境中学到知识,从而改善自身。DQN是传统的强化学习方法Q-Learning和Deep-Learning的结合体。

    读者可按照上知识树对DQN进行学习。

    网络结构代码如下:

     1 def Net():
     2     state_shape, action_dim = [80, 80, 4], 2
     3     actions = Input([action_dim])
     4     state = Input(state_shape)
     5 
     6     x = Conv2D(32, kernel_size=8, strides=4, padding="same")(state)
     7     x = Activation("relu")(x)
     8     x = MaxPool2D(pool_size=2)(x)
     9 
    10     x = Conv2D(64, kernel_size=4, strides=2, padding="same")(x)
    11     x = Activation('relu')(x)
    12 
    13     x = Conv2D(64, kernel_size=3, strides=1, padding="same")(x)
    14     x = Activation('relu')(x)
    15 
    16     x = Flatten()(x)
    17     x = Dense(512)(x)
    18     x = Activation('relu')(x)
    19 
    20     out1 = Dense(action_dim)(x)
    21 
    22     out2 = Dot(-1)([actions, out1])
    23     model = keras.Model([state, actions], out2)
    24     optimizer = keras.optimizers.Adam(1e-6)
    25     # optimizer = keras.optimizers.SGD(lr=1e-5, decay=1e-6, momentum=0.9, nesterov=True)
    26     loss = keras.losses.mse
    27     model.compile(optimizer=optimizer, loss=loss)
    28     model.summary()
    29     return model

    最终训练280epoch之后(每个epoch训练10000帧图像),结果如图:

  • 相关阅读:
    hadoop hdfs总结 NameNode部分 概述
    最近近况
    hadoop hdfs总结 NameNode部分 1
    rsync 使用
    SmartHost
    hadoop unit test 问题
    git 使用记录
    java 类内存分配计算
    hadoop hdfs总结 NameNode部分 2
    0417 430调试技巧
  • 原文地址:https://www.cnblogs.com/zdm-code/p/13872247.html
Copyright © 2011-2022 走看看