美文网首页
神经网络的训练

神经网络的训练

作者: 0xFFFFFG | 来源:发表于2019-06-15 15:34 被阅读0次

数据驱动

提取特征量

传统算法/其他机器学习算法/神经网络,灰色部分表示没有人为介入

训练数据和测试数据

  • 使用训练数据进行学习,寻找最优的参数
  • 使用测试数据评价模型的实际能力
  • 仅用一个数据集去学习和评价参数,容易出现过拟合

损失函数

  • 神经网络中以某个指标为线索寻找最优权重参数,所用的指标为损失函数
  • 均方误差:E=\frac{1}{2}\sum_k(y_k-t_k)^2,其中y_k 是表示神经网络的输出,t_k 表示监督数据,k 表示数据的维数
  • 交叉熵误差:E=-\sum_kt_klog\ y_k,其中y_k是神经网络输出对应分类的概率,t_k表示监督数据,k表示数据的维数,log表示自然对数
  • 批数据的交叉熵误差:E=-\frac{1}{N}\sum_n\sum_kt_{nk}log\ y_{nk}
  • mini-batch: 从训练数据中选出一批数据(称为mini-batch),用这批数据进行学习,这种方式称为mini-batch

梯度下降法

梯度(gradient): \nabla f = (\frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2},...,\frac{\partial f}{\partial x_n}),梯度是一个向量
梯度下降法:
x_0' = x_0-\eta\frac{\partial f}{\partial x_0} \\ x_1' = x_1-\eta\frac{\partial f}{\partial x_1} \\ 表示成向量形式:\vec {x'} = \vec{x} - \eta·\nabla f\qquad其中\eta称为学习率 \\ 循环执行这个步骤,当|x'-x|<\epsilon时,凸函数f找到误差范围内的最小值

正向传播的二层神经网络

步骤

  1. 确定概率预测函数
    predict : (Param,X) \rightarrow \{\\ W_1,W_2,b_1,b_2 = Param[W_1],Param[W_2],Param[b_1],Param[b_1] \\ A_1 = X·W_1^T + b_1 \\ Z_1 = sigmoid(A_1,axis=1) \\ A_2 = Z_1·W_2^T + b_2 \\ Z_2 = softmax(A_2,axis=1) \\ y = Z_2 \\ return\ y\}
  2. 确定T函数(预测正确为1,否则为0)
    t : (Param,X,y) \rightarrow \{ \\ p = predict(Param,X) \\ y_{predict} = argmax(p,axis=1)\\ return\ int(y_{predict} == p,axis=1)\}
  3. 确定交叉熵误差作为神经网络损失函数
    loss :(X,Param,y)\rightarrow\{ \\ t_{val} = t(Param,X,y) \\ p = predict(Param,X) \\ return - t_{val}·log(p) \}
  4. Xt作为参数,确定loss函数对变量ParamParam=Param_0处的梯度
    G_0 = \nabla loss(Param)|_{Param = Param_0,X=X_0,y=y_0}
  5. 使用mni_batch更新参数Param,\eta为学习率
    G_{itr} = \nabla loss(Param)|_{Param = Param_{itr},x=x_{batch},y=y_{batch}} \\ Param_{itr+1} = Param_{itr} -G_{itr} * \eta
  6. (可视化时可选)
    周期性地记录train_acc和test_acc,最后用这两组记录绘制学习曲线
  7. 达到最大迭代次数后返回Param_{maxitr}

流程图表示如下


正向传播的二层神经网络

小结

  1. 机器学习中使用数据集分为训练数据集和测试数据集
  2. 神经网络用训练数据进行学习,并用测试数据评价学习到的模型的泛化能力
  3. 神经网络的学习以损失函数为指标,更新权重参数,以使损失函数的值减小
  4. 利用某个给定的微小值的差分求导数的过程(导数定义),称为数值微分
  5. 利用数值微分,可以计算权重参数的梯度
  6. 数值微分虽然简单但是费时间,另一种高速计算导数的方法叫做误差的反向传播法

相关文章

  • 斯坦福cs231n学习笔记(10)------神经网络训练细节(

    神经网络训练细节系列笔记: 神经网络训练细节(激活函数) 神经网络训练细节(数据预处理、权重初始化) 神经网络训练...

  • 深度学习基础2

    Stochastic Gradient Descent 如何训练神经网络 训练神经网络就是调整权重。 这里介绍了损...

  • pytorch 入门 api

    张量操作 神经网络 训练图片分类器 多GPU训练 参考 张量神经网络训练图片分类器DataParallel多GPU示例

  • 神经网络模型+进阶

    PART I 神经网络模型 模拟数据 查看模拟数据 神经网络模型训练 可视化训练结果 神经网络模型结果评估 平均准...

  • 机器学习之卷积神经网络(二)

    今天继续分享卷积神经网络,常常用深度学习这个术语来指训练神经网络的过程,有时它指的是特别大规模的神经网络训练。那么...

  • 李宏毅机器学习(十五)Converlutional Neuron

    我们都知道CNN常用于图像处理,也可以用一般神经网络去训练,为什么使用卷积神经网络训练呢?我们训练一个一般神经网络...

  • 神经网络文章索引

    这个专辑将努力向大家解释清楚什么是神经网络,神经网络是怎么训练的,为什么训练出来的神经网络能够进行分类预测。其中也...

  • tensorflow断点续训

    在进行神经网络训练过程中由于一些因素导致训练无法进行,需要保存当前的训练结果下次接着训练全连接反向传播神经网络中,...

  • 人工智能简史笔记2

    第四章开始学习什么是神经网络 我们把迭代运算的过程称为“神经网络的训练”,最终训练好的神经网络可以对新的数据作分类...

  • 吴恩达-机器学习笔记(第五周)

    九、神经网络的学习(Neural Networks: Learning) 9.1 代价函数   假设神经网络的训练...

网友评论

      本文标题:神经网络的训练

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