神经网络(非线性假设)

目录

一、神经网络初步认识

1、学习神经网络的意义

2、神经网络应用

3、神经网络的表示

(1)如何表示假设或模型

(2)神经网络如何工作(计算步骤)

(3)前向传播:向量化计算激活项 

(4)举例说明神经网络表达函数

        step1:了解XOR/XNOR函数

        step2:了解and/or/非/三个函数如何用神经网络表示

        step3:了解复杂例子,即用多层神经元的神经网络计算更复杂的函数

        step4:一大应用——识别手写数字

二、神经网络解决多分类问题

1、表达形式

2、代价函数

3、优化函数——反向传播算法

(1)前向传播计算hθ(x)的值

(2)反向传播算法

        (i)名字由来:

        (ii)式子含义:

        (ⅲ)反向传播算法的程序表达

        (ⅳ)如何在octave中获得各项矩阵   

4、梯度检测

(1)作用:

(2)梯度检测的步骤:

(3)介绍计算gradApprox的步骤

5、随机初始化

(1)如何设初始值

6、如何选择网络结构

7、实现神经网络的六个步骤

三、神经网络应用(无人驾驶)

1、训练转向

2、具体学习过程


一、神经网络初步认识

1、学习神经网络的意义

逻辑分类问题中,二分类问题,只有两个特征值 ;若有n个特征值,简单的二次无法拟合复杂的分界线;全部加上又会使特征空间急剧膨胀。

举个例子,计算机视觉识别汽车,"+"代表的是汽车样本,“-”代表的是非汽车样本,图像是50*50灰度图,此时就有2500个像素, (xi *xj):≈ 3百万个特征值

2、神经网络应用

为我们打开一扇进入遥远人工智能之梦的窗户,现代机器学习应用最为先进的技术方法。帮助盲人通过舌头“看”到事务,通过声呐去避开障碍物;人通过腰带像鸟一样去辨别南北,青蛙可以利用戴上的第三只人造“眼睛”去看世界。

3、神经网络的表示

(1)如何表示假设或模型

       (i)神经元本体:单个神经元——一个计算单元:

①细胞体Nucleus

②Dendrite树突:神经元的输入通道、接受信息

③轴突Axon:输出通道,给其他神经元传递信号

       一组神经元:通过微弱的电流(动作电位)进行沟通,人类思考的过程:将收到的信息进行计算,并向其他神经元传递信息。如活动肌肉,就会触发一个神经元给肌肉发动脉冲

    (ii)神经元模型:逻辑单元

神经网络术语:激活函数及权重

如:带有sigmoid或者logistic的激活函数的人工神经元

激活函数及g(z)=1/(1+e^-z);权重即是模型的参数θ

  (iii)神经网络即为一组神经元连接在一起的集合 

注:如图所示,layer1 be called input layer,layer2 be called hidden layer,layer3 be called output layer

(2)神经网络如何工作(计算步骤)

activation激活项是指由具体的神经元计算并输出的值,权重控制层与层之间的映射

上图包含两条信息:

1、得到激活项(隐藏单位)的计算过程;

2、参数矩阵θ维数的规律:首先θ是两个层之间的权重,它的维数取决于左右两层的个数,是后一层的个数*(前一边层的个数+1)[why+1呢?因为会加偏置单元]

(3)前向传播:向量化计算激活项 

注:前向传播即是从输入层到隐藏层再到输出层的依次计算激活项的过程,上述过程是向量化实现方法

(4)举例说明神经网络表达函数

        step1:了解XOR/XNOR函数

①“XOR”表示为:一个为真则为1         ② “XNOT”表示为:同为真或同为假时为1

函数图示如下

        step2:了解and/or/非/三个函数如何用神经网络表示

①用g函数表示AND关系

② 用g函数表示OR关系

③用g函数表示“非”关系:

大体实现思路:即在预期得到非结果的变量X1前面放一个很大的负权重

④略复杂(NOTx1)AND(NOTx2)自己试着写出 my answer:g(-20x1-20x2+10)

        step3:了解复杂例子,即用多层神经元的神经网络计算更复杂的函数

①x1 XNOR x2神经网络的计算过程 

注:总的神经网络第二层的“+1”是增加的偏置单元+1,总的神经网络共三层,第一层是输入层,中间是隐藏层,第三个是输出层,最后得到的Hθ(x)是一个非线性的决策边界

        step4:一大应用——识别手写数字

就是手写数字的分类,手写数字是输入的数据,通过隐藏层计算出一系列特征,再通过下一个隐藏层,计算出更复杂的特征,再往下计算,最后这些特征被用于逻辑回归分类器的最后一层

二、神经网络解决多分类问题

1、表达形式

pass[y是多维的nx1]

(1)对比二分类和多分类时,y的取值区别

2、代价函数

注 :

①符号含义:m、K、L、Sl、Sl+1、(hθ(x))i的i

m指的是训练集的个数

K是指分类个数(二分类时K是1),也是y表达式的维数

L是共几层神经元

s(l+1)是后一层sl代表的是前一层

(hθ(x))i中的i是指输出向量中的第i个元素

②两个式子的区别:

神经网络的代价函数,主要替换了逻辑分类中的y(i),因为y此时是多维,非单个数值。

③两个求和公式的意义:

第一个求和公式是:将所有层输出的代价函数相加

第二个求和公式即是:参数θ的求和公式从1开始,和逻辑回归中一样,需要除去那些对应偏置单位的项,因为无需正则化这些项,将这些项设为0即可

3、优化函数——反向传播算法

(1)前向传播计算hθ(x)的值

(2)反向传播算法

        (i)名字由来:

从输出项开始计算,将值反向传给前一层,第三层δ由第四层δ计算得出

        (ii)式子含义:

δj^(l)(delta)的含义:是对应激活值aj^(l)(即l层j节点的激活值)的误差

        计算δ的目的:可由此计算出所有参数的偏导,代价函数关于z的偏导

        如何计算得到:最后一层的δ=“激活值”minus训练集中“yi”的值

                                 前几层的δ值:其中“.*”是点乘,是MATLAB中表示方式,

                                                        g'(z^(3))是求g函数的偏导,其值也可等于a^(3)*(1-a^(3))

                                具体如下图:右上角计算式子 

        向量化:上述式子都可以看作是向量的相减

        关于δ^(1):是不存在的,因为第一层是输入项不改变,没有误差

        (ⅲ)反向传播算法的程序表达

注:jval、gradient是costFunction返回的参数,其中jval是代价(误差)、gradient是导数(梯度返回值);

有别于逻辑分类,此时的θ非向量而是矩阵,因为神经网络有许多层,每两层都有一个向量θ

        (ⅳ)如何在octave中获得各项矩阵   

①thetaVec、DVec是矩阵转换为向量

②Theta1\Theta2\Theta3是返回到矩阵表达式

举例:在octave中输入如下,进行矩阵转向量操作

>>>Theta1 = ones(10,11)

>>>Theta2 =2* ones(10,11)

>>>Theta3 = 3*ones(1,11)

>>>thetaVec = [Theta1(:):Theta2(:):Theta3(:)];

>>>size(thetaVec)

ans = 

        231        1

在octave中输入如下,进行向量转矩阵操作

 >>>reshape(thetaVec(1:110),10,11) #表示的意思是取1到110的元素,构成10*11的矩阵

 >>>reshape(thetaVec(111:220),10,11)

 >>>reshape(thetaVec(221:231),1,11)

4、梯度检测

(1)作用:

保障DVec算偏导的代码是正确的

(2)梯度检测的步骤:

①通过反向传播来计算DVec

②计算gradApprox

③验证确保DVec和gradApprox数值上差不多,仅仅是小数点后几位的差距

④在利用代码进行网络学习时,关掉梯度检验(计算量大   )

(3)介绍计算gradApprox的步骤

①代价函数偏导的几何意义:求导公式

 

② 代价函数偏导的octave代码

 注:先将theta(此时θ是向量)赋值给thetaPlus,再循环每个θ将其增大epsilon;同理将theta(此时θ是向量)赋值给thetaMinus,再循环每个θ将其减少epsilon;

③算出各项导数后与Dvec(反向传播中得到的导数)比较,若数值上二者近似,则反向传播的实现是正确的,即可很好的优化J(θ)

5、随机初始化

背景:执行算法时,梯度下降算法或者高级优化算法,需要为变量提供一些初始值

全部设为0,逻辑回归中可以,但在神经网络中不行,会高度冗余  ,最后的神经网络智能得到一个特征

(1)如何设初始值

注:theta1 = rand(10,11)*2ε-ε,其中括号内代表的是10*11的矩阵

6、如何选择网络结构

①输入层取决于特征数量

②输出层取决于分类的数量

③隐藏层默认是一层,隐藏层的数量可以等于输入层,也可是其二倍或三倍

 后续课程继续会详细讲到如何选择网络结构,再补充

7、实现神经网络的六个步骤

①构建神经网络、初始化权重

②执行前向传播算法,输入任一x^(i)得到一个输出值y的向量Hθ(x^(i))

③通过代码计算代价函数J(θ)

④ 执行反向传播算法,算出偏导数项  J(θ)关于θ的偏导数

⑤利用梯度检验检查反向传播计算得到的偏导与用数值方法得到的估计值是否接近你

若验证反向传播是对的,即关闭梯度检查

⑥使用优化算法例如梯度下降算法或其他优化算法,结合反向传播算法,最小化关于θ的代价函数

其中反向传播的作用就是算出下降的方向,而梯度下降的作用就是最小化代价函数

三、神经网络应用(无人驾驶)

1、训练转向

        人类驾驶员在单行道上驾驶时,ALVINN观看,其每两秒将路况画成一张数字化图片并记录驾驶者的驾驶方向

        路况图片作为输入资料提供给ALVINN的三层神经网络,通过反向传播学习算法,输出与人类驾驶员相同的操纵方向

2、具体学习过程

        起初网络选择的的方向是随机的,两分钟的学习,掌握了人类驾驶员的转向规律。

        每秒钟ALVINN生成12次数字化图片并传送给神经网络进行训练,每个神经网络同时工作,各自生成一个行使方向以及对该次响应的置信度,选择置信度高的输出方向,当前方有车辆出现时,置信度会降低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值