人工智能实战_第七次作业(个人)_王涛


作业要求

标题 内容
这个作业属于哪个课程 班级博客的链接
这个作业的要求在哪里 作业要求的链接
我在这个课程的目标是 完成一个完整的项目,学以致用
这个作业在哪个具体方面帮助我实现目标 应用LSTM和RL解决博弈论问题

一、黄金点游戏

规则:N个玩家,每人写一个或两个0~100之间的有理数 (不包括0或100),提交给服务器,服务器在当前回合结束时算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的玩家得到N分,离G最远的玩家得到-2分,其他玩家得0分。只有一个玩家参与时不得分。

二、理解

其实邹欣老师的的理解以及很深刻了,这也是我玩黄金点的动力之一,想想简单游戏和新技术发展规律融合在一起,想想就刺激。

三、使用的方法

  1. 简单规律:当看到黄金点下降时候就下降之前下降量的二分之一,当看到黄金点上升时候上升之前上升量的二分之一。保持不变时候,取前两次平均。
    失败!
  2. 时序序列不用LSTM? 使用三层LSTM网络,取steps=10,n_input=1,取当天黄金点个数70%做训练集(182,10)vs(182,1),30%做验证集,metrics:mse,收敛到mse为5.5 左右为一个较长的 plateus ,之后训练误差不断减少,val误差不断增加,网络开始严重过拟合。
    难道是一个LSTM cell 需要不只一个input吗?所以steps=5,n_input=2,同理,仍然mse收敛到5.5,失败!
    实际上,我思考到,RNN可以拟合一个有规律的时序序列,但是黄金点规律是难以察觉的,mse难以优化,我们不应该尝试mse metrics,赢者通吃,你希望以LSTM去最好拟合这个序列是不可能,是的,你拟合的序列mse小了又如何,你还是赢不了,考虑更改metrics,只取tf.abs((y_pred-y_true)>1)内不计误差,网络无法收敛,因为开始mse=0,或者只计算tf.abs((y_pred-y_true)>1)的mse,仍然不行。
    inimize: sub = y_pred-y, 曾经考虑类似于下面loss计算,
    loss = -(tf.reduce_sum(tf.cast(sub<0.1, tf.float32))5+tf.reduce_sum(tf.cast(sub<0.3, tf.float32))3)
    告诉我梯度无法传递。
  3. 行,赢者通吃,好好复习RL, 用强化学习解决这个问题,不过其实第一时间想到的就是LSTM了,可惜不行。。。
  4. 当然也考虑过学习bot规则,可是我觉得在本地学习bot004, 预测前一个黄金点,botxxx,一直预测18.....。感觉本地先训练是无耻的,可以考虑建立多个RNN模型根据每个bot预测他可能下一个回合预测的结果,去预测。建立更多的模型,算了,还是先试试RL吧。如果一个模型连基本bot004都打不败,那么就没有存在的必要性了。最近两天把RL写出来,看看结果,再试试‘无耻的方法’,最近多灾多难,拖太久了。

四、2019_5_14补充

之前由于考虑到LSTM没能有一个很好的MSE结果,故没有测验,昨天和今天尝试了改进metrics的LSTM,主要是将转化为(error一定范围用MSE,error较大用线性L_1范数。),而且验证集MSE越大小不一定越好,我们还要考虑到sum(abs(y_true-y_pred)<lambda)内的黄金点个数才是我们关注的,若最优MSE,预测值容易在较小范围摆动。

当然没有在预测时候继续训练,只是一个每次restore model罢了,但是,一个LSTM,也不值得这样去尝试,现在应该试试RL才是我们想要的。
现在在考虑强化学习中state,action怎么定义,obs可以是当前受到的别人的该轮的预测值,reward为奖励,但是你的action如何定义是一个问题。

五、2019_5_19补充

RL包括两个方面,先采取Policy Gradient方法,主要是定义了action和environment:如下图:

reward主要是定义如果预测值和实际goldennumber相差0.5以内,给予reward;如果随机初始化网络权重,reward为173,训练完,reward为473,实际上这个也可以用supervised learning去做,纯Policy Gradient的学习表现在训练集表现还行:43/92,现在在看看实际的表现,因为可能过拟合(只用训练数据训练,数据太少了,无validation)。还行吧,等几天考完或者最近有时间就在试试Q-learning。
感觉action可以再优化;可以试试比如36个输入(最近三回合),可以尝试在reward取更小,看实际更小reward所带来的sum(abs(y_true-y_pred)<lambda),lambda在0.5范围的gain如何。还是挺有收获的,感谢fatterbetter哈哈。

五、2019_5_19晚补充

改变了action_space:

改变原先方式输入,原先是最近10回合goldnumber,现在是最近3回合goldnumber所有人的预测值和最近三回合goldnumber,即为n_inputs = 36
改变reward给予方式,原先是只给距离gold值0.5内,尝试了不同距离给reward:0.4内12, 0.内8, 1内4,现在还在运行。
好好复习考试,下次继续!!!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM