美文网首页机器学习与数据挖掘
TensorFlow学习笔记(4)

TensorFlow学习笔记(4)

作者: 只是不在意 | 来源:发表于2017-09-04 14:50 被阅读0次

    这节课主要是理论,比较高深。老师讲完没太明白,对照书看才了解一二:

    4.1 深度学习与深层网络神经

    深度学习是一种高复杂性数据建模算法,它有两个非常重要的特性:多层和非线性。线性模型可以解决线性可分问题,而深度学习的目的是为了解决现实中更为复杂,无法线性分割的问题。

    4.1.2 激活函数实现去线性化

    解释:如果将每一个神经元的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性的了,这个非线性函数就是激活函数。目前TensorFlow提供7种激活函数,如tf.nn.relu,tf.sigmoid和tf.tanh等。
    同时加入偏置值。

    4.1.3 加入隐藏层解决异化运算

    4.2 损失函数定义
    4.2.1 经典损失函数

    分类问题和回归问题是监督学习的两大种类。先说分类问题:
    通过神经网络解决多分类问题最常用的方法是设置n个输出节点,其中n为类别的个数。
    交叉熵函数(cross entropy)刻画了两个概率分布之间的距离,它是分类问题中使用比较广的一种损失函数。交叉熵值越小,两个概率分布越接近。
    而Softmax回归可以将神经网络前向传播的结果变成概率分布。所以TensorFlow对这交叉熵和Softmax进行了统一封装,成为tf.nn.softmax_cross_entropy_with_logits函数。

    如果输出神经元是线性的,那么二次代价函数就是一种合适的选择。如果输出神经元是S函数,那么比较适合交叉熵代价函数。

    回归问题解决的是对具体数值的预测,比如房价预测等。 这些问题需要预测的是一个任意实数,最常用的损失函数是均方误差(MSE, mean squared error),公式为:
    mse = tf.reduce_mean(tf.square(prediction-y))


    4.3 神经网络优化算法

    神经网络的优化过程可以分为两个阶段:
    第一个阶段先通过前向传播算法得到预测值,并与真实值对比,得出两者之间的差距
    第二个阶段通过反向传播算法计算损失函数对每一个参数的梯度,在根据梯度和学习率使用梯度下降算法更新每一个参数。
    梯度下降法有三种:

    1. 标准梯度下降法
      先计算所有样本汇总误差,然后根据总误差来更新权值。学习率是用来定义每次参数更新移动的幅度。

    2. 随机梯度下降法
      随机抽取一个样本来计算误差,然后更新权值

    3. 批量梯度下降法
      折中方案,从总样本中选取一个批次,然后计算这个batch的误差,根据误差更新权值
      误差越大时,梯度就越大,参数w和b调整就越快,训练速度就越快。
      只有当损失函数为凸函数时,梯度下降算法才能保证达到全局最优解。

    4.4 神经网络进一步优化

    包括学习率的设置,正则化避免过拟合,以及滑动平均模型。


    小结一下,要在MNIST提高识别率,有:a. 学习率,b.加入隐藏层,c. 优化器,d. 迭代次数等方法。

    最后按照老师的示例,加了2层隐藏层,将Mnist识别度提高到98%左右。
    github代码

    相关文章

      网友评论

        本文标题:TensorFlow学习笔记(4)

        本文链接:https://www.haomeiwen.com/subject/uosadxtx.html