机器学习入门 5

文章详细介绍了神经网络的基本结构,包括输入、隐藏和输出层,以及偏置单元的作用。它阐述了激活函数Sigmoid在神经元中的应用,定义了代价函数,并分别讨论了二类和多类分类的情况。接着,文章重点解析了反向传播算法,用于计算代价函数的梯度,从输出层开始逐层计算误差。最后,提到了神经网络的结构选择和训练过程,包括参数初始化、代价函数计算和优化算法的使用。
摘要由CSDN通过智能技术生成
  • x1,x2,x3是输入单元,将原始数据输入给它们

  • 输入层:数据节点所在的层

  • 网络层:输出hihi连同它的网络层参数w,bw,b

  • 隐藏层:网络层中间的层

  • 输出层:最后一层

  • 偏置单元:bias unit,每层加上偏置单元

     

工作原理

激活单元和输出的表示:

 

第l层第j个神经元的输出

 

g: Sigmoid函数 在神经网络中被称为激活函数

神经网络的代价函数

  • m : 训练样本个数

  • x, y : 输入和输出信号

  • L : 代表神经网络层数

  • S_I : 每层的神经元个数

  • S_l : 表示输出神经元个数

分类

  • 二类分类: S_L=0, y=0 / 1 ;输出是一个实数

  • K 类分类: S_L=k, y_i=1 表示分到第 i 类的情况。输出是一个多维向量

代价函数

logistic回归(LR)中的代价函数:

在logistic回归中,只有一个输出变量称之为标量scalar。

但是在神经网络中会有多个输出变量,hθ(x)是一个K维的向量。

假设第i个输出函数:

代价函数J表示为:

解释说明:

 

反向传播

  • 首先计算最后一层的误差

  • 再一层层地反向求出各层的误差,直到倒数第二层

前向传播例子

假设有一个数据样本:

前向传播法就是通过一层层地按照神经网络的顺序从输入层到输出层计算下去。

反向传播例子

  1. 从最后一层的误差开始计算:

  1. 用δ表示误差,误差=模型预测值-真实值

  1. 前一层的误差

  1. 再前一层的误差

第一层是输入变量,不存在误差

  1. 假设λ=0,如果不做正则化处理时

对上面的式子中各个上下标的含义进行解释:

  • l代表的是第几层

  • j代表的是计算层中的激活单元的下标

  • i代表的是误差单元的下标

算法

  • 利用正向传播方法计算每层的激活单元

  • 利用训练集的真实结果与神经网络的预测结果求出最后一层的误差

  • 最后利用该误差运用反向传播法计算出直至第二层的所有误差。

  • 便可以计算代价函数的偏导数

反向传播的直观理解

前向传播原理

  • 2个输入单元;2个隐藏层(不包含偏置单元);1个输出单元

  • 上标ii表示的是第几层,下标表示的是第几个特征或者说属性

图中有个小问题,看截图的右下角!!!

根据上面的反向传播法得到的结论:

反向传播原理

参数展开

上面的式子中实现了怎么利用反向传播法计算代价函数的导数,在这里介绍怎么将参数从矩阵形式展开成向量形式

总结

首要工作

在构建神经网络的时候,首先考虑的是如何选择网络结构:多少层和每层多少个神经单元

  • 第一层的单元数即我们训练集的特征数量。

  • 最后一层的单元数是我们训练集的结果的类的数量。

  • 如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。

训练神经网络步骤

  1. 参数的随机初始化

  2. 利用正向传播方法计算所有的hθ(x)

  3. 编写计算代价函数 J_j 的代码

  4. 利用反向传播方法计算所有偏导数

  5. 利用数值检验方法检验这些偏导数

  6. 使用优化算法来最小化代价函数

此篇文章的部分内容参考了AI有道公众号

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值