博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
吴恩达机器学习笔记五_多元分类和神经网络
阅读量:6706 次
发布时间:2019-06-25

本文共 1291 字,大约阅读时间需要 4 分钟。

为什么要使用神经网络

在笔记三中,曾提到非线性拟合的问题。当时是通过构造特征向量,即由两个或以上的变量构造一个新的变量,增加\(\theta\)的维度,以拟合出更细腻的曲线。下面是课件中类似的例子:

005yAKGUgy1fwo0dp9wtfj30lw0br75g.jpg

可以看到,随着变量即数据集的维度增加,这种做法将会导致“维度灾难”,越来越不可行。就上述例子,以100维的数据集为例,二次项的构造复杂度是\(O(n^2)\),实际是5000;三次项复杂度是\(O(n^3)\),实际达到17000;当构造一百次项时,复杂度可能已经超出计算机所能处理的范围了。即使我们可以使用正则使假设函数简化,但正则化的过程也需要大量的数据集和大量的时间,同样不大可行。

NG的例子举到这里就戛然而止,后面就引入神经网络(Neuron Network)了。就我个人来说,把本章的视频看完后,隐约感觉到,神经网络的思想和之前提到的构造特征向量有相似之处,同时避免了维度灾难。如下:

005yAKGUgy1fwo13hqtxwj30l20bnq3r.jpg

上图是课件后面的部分。NG在这里根据各个层的特点进行分类:Layer1是输入层,Layer2是隐藏层,Layer3是输出层。对神经网络而言,输入层和输出层各只有一个,隐藏层根据实际情况可以有多个。看上去,每一个隐藏层都与上一层的输入量有关,同时根据各连接线的权值不同,实质上也是利用原有特征向量构造了新的特征向量。当然,这只是个人很主观的感觉。

神经网络组成

上面已经说到了,神经网络一般可以分成三个层次:输入层、隐藏层和输出层。对比着生物学上的神经系统,神经网络是由多个神经单元组成的。神经单元,即多个节点指向下一层的单节点这一结构,就是之前学过的多元对率回归所使用的结构。因而,我们可以把神经网络看成许多个神经单元的组合体。

005yAKGUgy1fwo357iz76j30ln0bh750.jpg

上图的神经单元中,我们发现在原有的特征值上添加了\(x_0\),这个值叫做“偏正量(bias unit)”。事实上神经网络的每一层都有这个偏正量。

前向传播算法

005yAKGUgy1fwo3w52wtrj30ms0bmq4q.jpg

005yAKGUgy1fwo3zdy210j30l70bnq3k.jpg

前向传播,直观上理解,就是从左向右赋权值,一层一层地构造隐藏层。对于每一层节点,它只能获取前一层节点的信息。

需要注意的是,最后构造出来的特征向量维度是这样的:\(S(\theta^{(j)})=s_{j+1}\times(s_j+1)\),其中j表示所在隐藏层的层数。最后得出的假设函数如下:

\[ h_\theta(x)=g(\theta^{(j)}a^{(j)}) \]

\[ a^{(j)}=g(\theta^{(j-1)}a^{(j-1)}) \]

神经网络的例子

逻辑运算

005yAKGUgy1fwo7934a7fj30lm0bc3ze.jpg

005yAKGUgy1fwo79l9wmrj30lj0bkwex.jpg

005yAKGUgy1fwo7az6argj30lb0bvaat.jpg

在本例中,使用sigmoid函数的特殊性质,构造了上面三个基本的逻辑门:与门、或门和非门。理论上,这三个逻辑门可以通过复杂组合表示所有数学逻辑。同样的,可以使用这些神经单元的组合来构造“或非门”的神经网络。

005yAKGUgy1fwo7uhd0g5j30np0bqwfz.jpg

多分类问题

先前提及的都是二元分类问题,现实中的分类问题往往是多元的。之前我们的做法是通过分割,将多元问题化解为多个二元问题.在神经网络中,我们可以通过多个节点的输出组合,来区分类型的不同。

005yAKGUgy1fwo7zbjd6qj30lg0bljsq.jpg

转载于:https://www.cnblogs.com/ChanWunsam/p/9867021.html

你可能感兴趣的文章
Metal入门(使用Metal画一个三角形)
查看>>
浅谈 iOS 应用启动过程
查看>>
Clang 之旅—[翻译]添加自定义的 attribute
查看>>
零基础学习Web开发的入门需要掌握哪些?
查看>>
慎用System.nanoTime()
查看>>
2017 移动端 iOS 年终工作总结-纯干货请自备酒水
查看>>
Android小知识-剖析OkHttp中的任务调度器Dispatcher
查看>>
switch的python实现
查看>>
Hybris UI的Route(路由)实现
查看>>
iOS探索:RunLoop本质、数据结构以及常驻线程实现
查看>>
算法的时间复杂度
查看>>
iOS独立开发者使用Bmob第三方后台服务初探
查看>>
共享适合移动端的“拾色器”插件
查看>>
《Java编程思想》笔记09------异常处理
查看>>
CPU发生异常到生成Crash Log的过程
查看>>
pyqt5中动画的使用
查看>>
到底什么才是业务架构?
查看>>
基础设施即代码:Terraform和AWS无服务器
查看>>
Atlassian发布事故管理解决方案Jira Ops
查看>>
书评 —— 《Go语言编程》
查看>>