• 第四章 神经网络的学习——数据&损失函数&数值微分&神经网络的梯度&学习算法的实现


    1.数据

    *机器学习中,一般将数据分为训练数据和测试数据两部分,首先使用训练数据进行学习,寻找最优的参数,然后使用测试数据评价训练的到的模型的实际能力。获得泛化能力是机器学习的最终目标

    2.损失函数

    *神经网络的学习通过某个指标表示现在的状态,然后以这个指标为基准,寻找最优权重参数,神经网络的学习中所用的指标称为损失函数,这个损失函数可以使用任意函数,但一般用均方误差和交叉熵误差等。

    *损失函数是表示神经网络性能的“恶劣程度”的指标

    *在神经网络的学习中,寻找最优参数(权重和偏置)时,要寻找使损失函数的值尽可能小的参数,因此需要计算参数的导数,然后以这个导数为指引,逐步更新参数的值

    (1)均方误差

    yk表示神经网络的输出, tk表示正确解, k表示数据的维度

     2)交叉熵误差

    (3)mini-batch交叉熵误差

       计算损失函数时,必须将所有的训练数据作为对象

     

    np.random.choice()可以从指定的数字中随机选择想要的数字,比如np.random.choice(60000,10)会从0到59999之间随机选择10个数字

    3.数值微分

    (1)导数

       表示某个瞬间的变化量

    (2)偏导数

    (3)梯度

       由全部变量的偏导数汇总而成的向量称为梯度,例如

     

    梯度指示的方向是各点处的函数值减小最多的方向

       虽然梯度的方向并不一定指向最小值,但沿着它的方向能够最大限度地减小函数的值,因此,在寻找函数的最小值的位置时,要以梯度的信息为线索,决定前进的方向

    (4)梯度法

    函数的取值从当前位置沿着梯度的方向前进一定距离,然后在新的地方重新求梯度,再沿着新梯度的方向前进,如此反复,不断沿梯度方向前进

     用数学式表示梯度法:

    η表示更新量,在神经网络的学习中称为学习率,学习率决定再一次学习中,应该学习多少,以及在多大程度上更新参数,学习率需要实现确定为某个值,比如0.01或0.001,一般而言,这个值过大或过小都无法“到达最优位置”。

     

    像学习率这样的参数称为超参数,一般来说,超参数需要尝试多个值,以便找到一种可以使学习顺利进行的设定

    4.神经网络的梯度

    *是指损失函数关于权重参数的梯度,例如有一个形状为2*3的权重W的神经网络,L表示损失函数,\frac{\partial L}{\partial W} 表示梯度:

    元素\frac{\partial L}{\partial \omega 11} 表示当w11 稍微变化时,损失函数L会发生多大变化

    *求梯度的代码如下:

     *使用求梯度的类:

    5.学习算法的实现

    *神经网络的学习步骤:

       (1)前提:神经网络存在合适的权重和偏置,调整权重和偏置以便拟合训练数据的过程称为学习

       (2)步骤一(mini-batch):从训练数据中随机选出一部分数据,这部分数据称为mini-batch,目标是减小mini-batch损失函数的值

       (3)步骤二(计算梯度):为了减小mini-batch的损失函数的值,需要求出各个权重参数的梯度,梯度表示损失函数的值减小最多的方向

       (4)步骤三(更新参数):将权重参数沿梯度方向进行微小更新

       (5)步骤四(重复):重复步骤一、步骤二、步骤三

    *以2层神经网络为对象,使用MNIST数据集进行学习

       将这个2层神经网络实现为一个名为TowLayerNet的类

    \ch04\two_layer_net.py

       使用MNIST进行学习

    \ch04\train_neuralnet.py

    链接:https://pan.baidu.com/s/15DiwneQN-pI73il5pif-vA?pwd=1212 
    提取码:1212

     

  • 相关阅读:
    CentOS 7 上编译和安装 SQLite 3.9.0
    一点一点学习C++之笔记004
    HBuilder X 未检测到手机或模拟器(安卓端)
    全网最新的nacos 2.1.0集群多节点部署教程
    3ds Max渲染用专业显卡还是游戏显卡?
    【JVM】jvm中的方法区简介
    基于网络数据流的未知密码协议逆向分析
    在javascript中将字符串转换为数字的6种方法
    Hexo自定义修改文章访问地址
    LabVIEW定义自定义错误代码在应用程序中使用
  • 原文地址:https://blog.csdn.net/weixin_47687315/article/details/126688408