蒋振飞的博客 - 机器学习03:神经网络   
正在加载蒋振飞的博客...
V3.0
蒋振飞的博客

机器学习03:神经网络

发布时间: 2018年10月03日 发布人: 蒋振飞 热度: 208 ℃ 评论数: 0

1.非线性假设

    如果想要训练一个模型,让它能够识别对象,例如是识别图片上的内容,可以有两种方法。
    方法一:利用很多汽车的图片和很多非汽车的图片,然后利用这些图片上一个个像素的值(饱和度或亮度)来作为特征。
    方法二:选取图片(灰度图片,即每个像素只有一个值)上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车。

3ac5e06e852ad3deef4cba782ebe425b.jpg

    假使采用的都是50x50像素的小图片,并且将所有的像素视为特征,则会有 2500个特征,如果进一步将两两特征组合构成一个多项式模型,则会有个(接近3百万个)特征,普通的逻辑回归模型,不能有效地处理这么多的特征,所以这时候就引入了神经网络的概念。

2.代价函数

    假设神经网络的训练样本有个,每个包含一组输入和一组输出信号表示神经网络层数,表示每层的neuron个数(表示输出层神经元个数),代表最后一层中处理单元的个数。
   将神经网络的分类定义为两种情况:二类分类多类分类

    1) 二类分类示哪一类;
    2) K类分类表示分到第类;(k>2)

    在逻辑回归中,只有一个输出变量,又称标量(scalar),也只有一个因变量 y,逻辑回归问题中的代价函数

20181004.jpg

    但在神经网络中,它可以有很多输出变量,因此代价函数会比逻辑回归更加复杂一些, 为: 

20181003.jpg

    逻辑回归于神经网络中的代价函数根本的思想几乎是一样的,均用来观察算法预测的结果与真实情况的误差有多大,不同的是对于每一行特征,神经网络都会预测个不同结果,然后再利用循环在个预测中选择可能性最高的一个,将其与中的实际数据进行比较。

3. 反向传播算法

    正向传播算法:从第一层开始正向一层一层进行计算,直到最后一层的
    反向传播算法:首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。
    举例:假设训练集只有一个样本,且神经网络是一个四层的神经网络,其中。分别代表4维向量,最后一层中处理单元的个数为4,4层神经网络。
    前向传播算法:

2ea8f5ce4c3df931ee49cf8d987ef25d.jpg

    从最后一层的误差开始计算,误差是激活单元预测()与实际值()之间的误差,()。 用来表示误差,则: 。利用这个误差值来计算前一层的误差: 其中 是  形函数的导数,。而则是权重导致的误差的和。下一步是继续计算第二层的误差:  因为第一层是输入变量,不存在误差。有了所有的误差的表达式后,便可以计算代价函数的偏导数了,假设,即不做任何正则化处理时有: 
    ① l 代表目前所计算的是第几层。
    ② j 代表目前计算层中的激活单元的下标,也将是下一层的第个输入变量的下标。
    ③ i 代表下一层中误差单元的下标,是受到权重矩阵中第行影响的下一层中的误差单元的下标。

4.使用神经网络时的步骤

    ①第一件要做的事是选择网络结构,即决定选择多少层以及决定每层分别有多少个单元。
    ②第一层的单元数即训练集的特征数量。
    ③最后一层的单元数是训练集的结果的类的数量。
    ④如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。
    ⑤真正要决定的是隐藏层的层数和每个中间层的单元数。

5.训练神经网络

    ①参数的随机初始化。
    ②利用正向传播方法计算所有的        
    ③编写计算代价函数  的代码。
    ④利用反向传播方法计算所有偏导数。
    ⑤利用数值检验方法检验这些偏导数。
    ⑥使用优化算法来最小化代价函数。

打赏 蒋振飞

取消

感谢您的支持,我会继续努力的!

扫码支持
一分也是爱     一块不嫌多

点击 支付宝 或 微信 打赏蒋振飞

打开支付宝扫一扫,即可进行扫码打赏哦

评论列表