IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 10月21日-吴恩达机器学习P49-55 -> 正文阅读

[人工智能]10月21日-吴恩达机器学习P49-55

(一)用神经网络解决多元分类问题

1、举例
例如,我们想用训练的神经网络给图像分类,将自动识别行人、汽车、摩托车、卡车。那么我们的输出层将设置为四种矩阵,分别对应这四种分类结果。相当于四个模拟分类器,只不过结果y(i)不再是简单地对应1,2,3,4,而是四种向量。
在这里插入图片描述2、代价函数
假设当前有这样一个训练集,其中有m组训练样本。设L为这个神经网络的总层数,则L=4;用SL表示第L层的单元数,也就是神经元的数量,其中不包括第L层的偏差单元。
有两种分类,一种是二元分类,一种是多元(K元)分类:如果是二元分类,y=0或1,只有一个输出单元SL=1,神经网络的输出结果h(x)是一个实数;
如果要分成K类(K>=3),那么有K个输出单元SL=K,神经网络的输出结果h(x)是一个K维向量。
在这里插入图片描述现在来设置神经网络的代价函数,上面是逻辑回归的代价函数,神经网络在上面部分修改了一下,即不是只对一个单元y(i),而是对于K个单元y(i),包括正则项。列式如下:
在这里插入图片描述3、反向传播法
为了使代价函数最小,提出了一种反向传播算法(用来求解神经网络中代价函数的导数)。
首先,根据前向传播的过程我们计算每一层的激活值a(i)。将输入向量x看作a(1),计算中间量z(2)=权重向量θ(1)激活值a(1)…然后由此推算a(i)。
在这里插入图片描述接下来,计算每个神经元节点的激活值的误差。
设第l层第j个节点的误差表示为δj(l),那么第四层的误差就是第四层的激活值aj(4)减去训练样本的实际值yj,因为下标j表示的是第j项特征值,那么这个式子完全可以单纯用向量表示;
接下来计算δ(3),注意是向量点乘,右边这个导数g’可以计算出来,用蓝笔写出来了,可以自行推导;
同理可以计算δ(2)。
注意:因为第一层就是输入层,不可能存在误差,所以没有δ(1)。
因此可以算出其偏导项的计算公式(推导过程比较麻烦)如下(暂时忽略正则项,即λ=0):
在这里插入图片描述下面详细描述运用反向传播算法计算代价函数的过程:
先取一条训练数据(x(i),y(i)),利用前向传播计算a(l),再计算最后一层的激活值与实际输出值的误差,然后由此向前推导第L-1层的误差、第L-2层的误差…第2层的误差。最后将这些误差累积,跳出循环时计算Dij(l),就是最终的结果了。
在这里插入图片描述进一步解释
1、根据神经网络的代价函数,假设我们只有一个输出,且不考虑正则项,那么它的代价函数表示如下:
在这里插入图片描述2、那么实际上误差δ等于代价函数的偏导,表示如下;而如何而求上一层的δ要根据下一层的δ乘以权值的累积和计算的,具体过程如下:
在这里插入图片描述
细节–将矩阵展开成向量
1、执行代价函数costFunction输入的参数是theta(n+1维的向量),函数返回代价值jVal和导数值gradient(梯度值,是一个n+1维的向量);然后你可以将代数值传递给高级优化算法fminunc,它将取出theta的一些初始值initialTheta(n+1维的向量)。
但是,当我们使用神经网络时,我们的参数就不再是向量,而是矩阵了。因此,在一个L=4层的神经网络中,我们给出参数矩阵θ(1)、θ(2)、θ(3),对应的在octave中表示成Theta1、Theta2、Theta3;计算的梯度矩阵D(1)、D(2)、D(3)(与上面的梯度值gradient对应),对应的在octave中表示成D1、D2、D3。
所以现在就需要学习如何将这些矩阵元素取出并转为向量的小技巧。
在这里插入图片描述2、举例
设输入层有10个单元S1=10,隐藏层有10个单元S2=10,输出层有1个单元S3=1。那么可知参数矩阵θ(1)、θ(2)、θ(3)的维度以及D(1)、D(2)、D(3)的维度,表示如下。
那么首先要将θ(1)、θ(2)、θ(3)中的元素全部取出,然后展开赋给向量thetaVec;将D(1)、D(2)、D(3)中的元素全部取出,然后展开赋给向量DVec。
在这里插入图片描述如果需要将展开的向量复原成矩阵,就使用reshape命令,分别从向量中取出第几个到第几个元素。例如,Theta1是取出第1-110个元素,组成10
11的矩阵。
在这里插入图片描述

(二)梯度检测

1、由于反向传播的内部实现比较复杂,所以很容易产生一些微秒的bug,看似正常运行,最终结果可能比无bug情况下多出一个量级,但你根本察觉不到。
因此,我们使用梯度检测完成无论是前向传播还是反向传播的检验。
首先,我们来看当θ为实数时这个点的导数表示方式如下,左边是双侧查分,右边是单侧差分,一般我们选择左边这种更为精确。当ε约为10的-4次方的时候,我们认为这个式子约为精确地表示了这个点的导数。
应用到实际代码中是这样的:
在这里插入图片描述梯度检测方案:
现在我们考虑当θ是一个n维向量时,我们用类似的思想计算所有的偏导项:
在这里插入图片描述为了实现上述流程,我们使用如下代码:
这里的n指的是参数向量θ的维数,这样可以近似地求出这一点的导数项。接下来我们将使用反向传播算法计算出的导数DVec与刚刚算出的导数值gradApprox比较,在无bug的情况下二者应该是约等于(只有几位小数的差距)的关系。
在这里插入图片描述至此,梯度检测介绍完毕。
2、接下来介绍应用顺序建议
第一步,应用反向传播算法计算DVec;第二步,应用梯度检测计算gradApprox;第三步,确保二者的值近似相等;第四步,关掉梯度检测,将反向传播代码用于学习。(因为梯度检测算法的计算效率远远低于反向传播算法计算DVec的效率,所以检测完后请务必关闭)
在这里插入图片描述细节–随机初始化
1、当我们在执行一个梯度下降算法或其他高级算法时,我们需要为变量θ选择一个初始值initialTheta,在逻辑回归中我们一般将之设为0。
在这里插入图片描述但实际在神经网络中将所有权重初始化为0是不对的,这样会导致所有层的激活值一样、误差一样, 在后续的梯度更新中,蓝色线与蓝色线、红色线与红色线…代表的权重同时改变并且同时相等,这将形成一个高度冗余的现象。
在这里插入图片描述2、随机初始化方案
我们刚刚遇到的问题又被称为对称权重问题,需要用随机初始化解决。我们对每一个参数权重θ初始化到一个范围为[-ε,ε]的随机值。
例如我们将Theta1初始化:用一个10*11的随机矩阵rand(10,11)介于0-1之间,然后乘以两倍的ε,减去一个ε,最后得到一个[-ε,ε]的值。
注意,这里的ε与梯度检验中的ε没有关联。
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 14:56:26  更:2021-10-24 14:58:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:34:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码