机器学习算法 09 _01_理解神经网络_激活函数_网络拓扑_优化算法

目录

一 神经网络算法:Neural Network

1. 背景:

2. 多层向前神经网络(MultilaFeed_Froward neural Network)

3 设计神经网络结构

4 交叉验证方法(cross Validation)                 

5 backpropagation算法(是用在神经网络上的算法)

6 backpropagation 算法举例

0  几个概念:

1  激活函数:

1.1 激活函数

1.2 常用的三种激活函数

2 网络拓朴结构


一 神经网络算法:Neural Network

1. 背景:

1.1 以人脑中的神经网络为启发,历史上出现多个不同的版本

1.2 最著名的算法是1980年的backpropagation

2. 多层向前神经网络(MultilaFeed_Froward neural Network)

2.1 backpropagation 被使用在多层向前神经网络上

2.2 多层向前神经网络由以下部分组成

  输出层(input layer) 隐含层(hidden layers )输出层(output layers)

 2.3 每层由单元(units)组成

2.4 输入层(input layer)是由训练集的实例特征向量传入

2.5 经过连接点的权重(weight)传入下一层,一层的输出是下一层的输入

2.6 隐藏层的个数可以是任意的,输入层有一层,输出层有一层

2.7 每个单元unit 也可以被称作神经节点,根据生物学来源定义

2.8 以上称为2层神经网络(输入层不算)

2.9 一层加权的求和,然后根据非线性方程转化输出

2.10 作为多层向前神经网络,理论上有足够多大隐藏层,足够大的训练集,可以模拟出任何方程。



3 设计神经网络结构

3.1 使用神经网络训练数据之前,必须确定神经网络的层数,已经每层单元的个数

3.2 特征向量在被传入输入层时通常先被标准化(normalize)到0和1之间(为了加速学习过程)。

3.3 离散型变量可以被编码成每一个输入单元对应的一个特征值可能赋的值。

        比如:特征值A可能取三个值(a0,a1,a2),可以使用三个输入单元来表示A

                 如果A=a0 ,那么代表a0 的单元值就是1,其他取0;

                 如果A=a1 ,那么代表a1 的单元值就是1,其他取0,依次类推。

3.4 神经网络既可以用来做分类(classification)问题,也可以用来解决回归(regression)问题。

        3.4.1 对于分类问题,如果是二分类,可以用一个输出单元表示(0和1分别代表两类);

                                           如果多余两类,每一个类别用一个输出单元表示。

        3.4.2 如果没有明确的规则来设计最好有多少个隐藏层:

                根据实验测试和误差,根据准确度实验并改进

4 交叉验证方法(cross Validation)                 

        如何计算准确度?

         对样本数据按照3/4划分为训练集,1/4作为测试集是最常规的方法。除次方法外ML中经常使用交叉验证的方法来计算准确度。

假设有一组数据,我门将数据分成k份:

 第一次:选择第1份用来作为测试集,剩下的k-1份作为训练集,计算出一个准确度,

 第二次:我们将第2份用来作为测试集,剩下的k-1份作为训练集,计算出一个准确度,

......

重复k次,得到k个准确度。然后用这k个求一个平均值average。

 此方法成为K-fold cross validation

5 backpropagation算法(是用在神经网络上的算法)

backpropagation算法是怎样工作的?

5.1 通过迭代性的来处理训练集中的实例

5.2 通过对比神经网络输入层的预测值(predicted value)与真实值(target value)的之间的误差。(输入层的值经过线性求和 非线性转化 会得到一个预测值,预测值与真实值比较,算出误差)

5.3 反方向(从输出层=>隐藏层=>输入层)来以最小化误差(error)来更新每个连接的权重(weight);(根据误差向回走,逐渐往回更新每个单元格上的偏向bias和weight,然后我们再用第二组数据正向传播和反向更新,最后我们得到每一条线上的权重和每一个单元的偏向bias ,训练完成)

5.4 算法详细介绍

        输入:D:数据集,学习率 learning rate,一个多层向前的神经网络

        输出:一个训练好的神经网络(a  trained neural network )也就是权重weight和偏向bias全 都更新好了

        5.4.1  初始化权重weight和偏向bias,随机初始化在-1到1之间,或者-0.5-0.5之间,每个单元有一个偏向。

        5.4.2 对于每一个训练实例X,执行以下步骤:

                5.4.2.1 由输入层向前传送,的到一个预测值,预测值与真实值比较,算出误差 

                

                 

                5.4.2.2  根据误差error 反向传送(总结发现:下面的传递过程默认激活函数为sigmoid函数)

                        对于输出层误差:

                        

                          对于隐藏层误差:

                          

                         

                        算出输出层误差和隐藏层误差以后 我们就可以根据误差更新权重了,更新法则是梯度下降法,

                        权重更新:

        ​​​​​​​        ​​​​​​​        ​​​​​​​​​​​​​​​​​​​​​

                    

                         

                        偏向更新:

     

5.4.3终止条件

        5.4.3.1 权重的更新低于某个阈值

        5.4.3.2 预设的错误率低于某个阈值

        5.4.3.3 达到预设一定的循环次数

            

6 backpropagation 算法举例

 

以上4个步骤就完成了一轮的迭代

0  几个概念:

激活函数:将神经元的静输入信号转换成单一的输出信号,以便进一步在网络中传播

网络拓扑:描述了模型中神经元的数量以及层数和他们的连接的方式。

训练算法:指定如何设计连接权值重,以便抑制或增加神经元在输入信号中的比重。

在一个神经网络里一般每一层的激活函数都是一样的,相同层一定一样。

1  激活函数:

1.1 激活函数

1. Threshold

2. Sigmoid

3. Linear

4.Saturated Linear

5 HyperBolic Tangent

6 Gassus

 

1.2 常用的三种激活函数

1.sigmoid  

  \frac{1}{1+e^{-w^{_{T}}*x}}

2.tanh

tanh=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}

3.relu

max(0,z)

4 leak relu

max(az,z)

2 网络拓朴结构

2.1 单层: 输入层-->输出层:可以解释多元线性回归,逻辑回归

        正向传播:   样本带入网络模型,得到预测值,预测值跟实际值得到损失函数loss 的过程。

        反向传播 :损失函数求梯度,更新权重w的过程。

几个问题:

(1)NN是否可以用一个x预测多个结果  

        注意 可以用一个x预测多个结果 只是输出层节点增加

如果结果是连续值:回归问题,此时的激活函数选用y=x (线性回归)

如果结果是离散值:分类问题,二分类可以选用sigmoid函数

(2)采用sigmoid做激活函数和采用softmax做激活函数 在做分类时的区别?

区别1:公式不同

区别2:sigmoid做多分类,反向传播的时候每个类别的的w互不影响,因为w的调节是通过(预测值的求解或者说loss求解中)损失loss取梯度,每个类别的损失函数只跟当前类别的w有关;而softmax激活函数,预测值的求解或者说loss求解中用到了所有的w(分母相同的)。

区别3:结果值都是0-1范围,但是softmax的结果值之和为1,结果互斥。 sigmoid的结果值0-1,但是总和不一定为1。因此softmax多用来确定是某个类别。sigmoid多用来确定各类别的概率。

区别4:softmax做激活函数,相当于前一层线性求和得到Z之后,激活函数选用了y=x,然后再将前一层的各个Z带入到softmax公式中求取每个分类的概率值。所以有时候经常说softmax层,本质就是在跟以往的直接从线性求和,然后将该神经元的和值带入激活函数不同。

2.3 网络拓扑——多层网络

输入层 input layer 

隐藏层hidden layer

输出层 output layer

问题1 多层网络的作用:

(1)根据前一层推理和演绎出的中间结果(隐变量),隐藏层越多越能推理演绎更高层的结果。

(2.)隐藏层的数量小于输入层时起到降维的作用,反之起到升维的作用。

问题2 隐藏层的激活函数是否必须为非线性的?

答案:必须为非线性的。

原因是:前一层(线性求和,激活函数)-->当前层(线性求和,激活函数),如果前一层的激活函数为线性的。那当前层对前一层进行线性求和的结果化简后,实际上也是一个输入层样本的一个线性函数。也就是深层模型退化为了浅层模型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值