神经网络的训练

数据驱动

提取特征量

神经网络的训练_第1张图片
传统算法/其他机器学习算法/神经网络,灰色部分表示没有人为介入

训练数据和测试数据

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

损失函数

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

梯度下降法

梯度(gradient): ,梯度是一个向量
梯度下降法:
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)
  3. 确定交叉熵误差作为神经网络损失函数
  4. 和作为参数,确定函数对变量在处的梯度
  5. 使用mni_batch更新参数,为学习率
  6. (可视化时可选)
    周期性地记录train_acc和test_acc,最后用这两组记录绘制学习曲线
  7. 达到最大迭代次数后返回

流程图表示如下


神经网络的训练_第2张图片
正向传播的二层神经网络

小结

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

你可能感兴趣的:(神经网络的训练)