上一博客是神经网络的四大步骤:
神经网络的实现过程:
1、准备数据集,提取特征,作为输入喂给神经网络(Neural Network,NN)
2、搭建NN结构,从输入到输出(先搭建计算图,再用会话执行)
3、大量特征数据喂给NN,迭代优化NN参数
4、使用训练好的模型预测和分类
但是在神经网络中,也会有很多可以优化的地方
1、损失函数
上一次损失函数是按照均方的方式计算的,但是在处理很多现实问题时,我们可能会定义更符合自身需要的损失函数。比如利润最大化等。
同时也可以使用
交叉熵来替代平方差来评判所得结果与真实结果的相似性。
交叉熵的公式是
,他的涵义我的大致理解是现有策略和最优策略的差别。据我了解,交叉熵是信息论的概念,是衡量信息量的一个量化函数,经常被用来表示两个函数、信号等之间的相似度,交叉熵越小也就越相近。
利用交叉熵的概念,可以再tensorflow里面利用下面两行代码来表示。
ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))
cem = tf.reduce_mean(ce)
(softmax函数是为了满足输出的y1至yn转化成满足相加和为1的概率分布的函数,经转换后,可以把y1-yn看成n个事件的概率,从而计算交叉熵)
2、学习率
learning_rate是参数每次更新的幅度,上一博客中学习率我们固定了一个比较小的值,这样可以避免因为更新幅度过大,从而导致w越过最优点从而不断振荡,无法收敛,但是学习率过小就会产生收敛太慢的问题。
所以最好的学习率应该先大后小,这样可以避免学习率过大,也可以加快收敛速度。指数衰减学习率:学习率随着训练轮数变化而动态更新。公式: