¥
支付方式
请使用微信扫一扫 扫描二维码支付
请使用支付宝扫一扫 扫描二维码支付
目标:训练一个智能体去有效的完成任务,而不是训练神经网络。其中神经网络只是得到结果的一种方式。
定义计算图,训练,计算梯度,反向传播更新。
TF中实现了优化器可自动求导与反向传播。
需要判定一个决定是好是坏,而不是我们采取的动作符合我们在采样中学习到的,因此就需要公式化的目标函数。
zero-one loss/log likelihood loss
建议使用0-1loss,若你的动作匹配专家,你的损失就是0;否则就是1。
需要做的界定:更标准的机器学习,即界定泛化误差。bounded generalization error。如果你看到和你的训练数据同一个分布的新状态,你的误差仍然不大于误差。
————————————————————
Tensorflow综述:
defing computation graphs
calculating gradients
创建一个会话Session:一张白纸,在上面写下一些数学操作。
sess.run(c)是一种能让数据在你创建的图中进行流动的操作。
placeholder:shape=[None],你只能让你所有维度中的一个等于None。shape=[None, None]时,无法得到正确的结果。因为,需要知道,在运行过程中,矩阵乘法有多大。通常把None用在第一个维度上,作为数据的批量大小。
例子:
a是列向量,b是行向量。当运行a+b时,得到一个3X3的向量作为输出。tensorflow做了被称为广播操作的处理。broadcasting自行进行了维度匹配。通过复制两个3x3的矩阵,然后再将它们加在一起,以使两个向量的维度匹配。
——————————————————
create 变量:神经网络参数
tf.get_variable可以和这个被称为重复利用的机制(tf.global_variables)良好地协同运作。如果你想多次创建一个计算图,但却想使用相同的变量,这就将使得这些变量能有更安全的内部机制。
实际上,变量也是一个张量tensor。
当训练自己的模型的时候,变量只是略有不同被对待处理而已。
sess.run的计算顺序不重要。
接受一个批次的输入数据,一直运行下去,到最后计算损失(error,均方误差),然后返回,进行反向传播,计算梯度,并利用梯度值来更新参数,所以完成了一步梯度下降。
每次调用sess.run时,就调用了一个优化器,它就会做一步梯度下降。