吴恩达机器学习课程笔记二
创始人
2024-04-10 14:09:04
0

文章目录

  • 神经网络基础知识
  • 神经网络前向传播
    • 伪代码
    • 前向传播中单个神经元的作用
  • 矩阵加速运算
  • 训练模型的细节
  • 常用激活函数
    • ReLU
    • Sigmoid
    • Linear activation function
    • tanh
  • 选择激活函数
    • 选择`输出层`的激活函数
    • 选择`隐藏层`的激活函数
  • 为什么需要非线性激活函数
  • Softmax激活函数
  • 多标签分类问题
  • 梯度下降更好训练神经网络的方式-Adam

神经网络基础知识

neuron:神经元

activation:激活

layer:层(一组神经元)

hidden layer :隐藏层

output layer :输出层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B6xNWQeC-1668776797135)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221030200606871.png)]

数据量增大时,传统机器学习、小型神经网络、中型神经网络、大型神经网络的的性能变化,在大数据的今天一定要学深度学习

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IVDsGs2F-1668776797136)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221030205121498.png)]

神经网络一层(layer)由一个或者多个神经元构成

每一层的输出值也称为激活值(activate)

第一层的输入特征也被称为输入层

最后一层为输出层

在构建大型神经网络时,我们不可能手动将特征连接到神经元,一般是下图这样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ycs31yqt-1668776797136)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221030205634191.png)]

也可以是下图这样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GmGJRUDQ-1668776797137)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221030205709867.png)]

中间的这一层三个神经元的也被称为隐藏层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBdEeWim-1668776797138)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221031220900845.png)]

通常说几层神经网络时,包括最后一层输出层,但是不包括第0层输入层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BkZvA9DJ-1668776797138)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221031221619137.png)]

第i层的输出的激活值写做a[i]a^{[i]}a[i]

所以上图中layer 4省略的为:a2[3]=g(w[3]∗a[2]+b[3])a^{[3]}_2=g(w^{[3]}*a^{[2]}+b^{[3]})a2[3]​=g(w[3]∗a[2]+b[3])

神经网络前向传播

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1EqIJa8v-1668776881905)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107123627842.png)]

前向传播:神经元产生激活值传播给向下一层的神经元,作为下一层神经元输入值

伪代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dq1UFJeQ-1668776881906)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107125928053.png)]

layer 1有25个神经元,layer 2有15个神经元,layer 3 有一个神经元

简化代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BF37FLoq-1668776881906)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107165406759.png)]

进一步简化代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Z587Y0i-1668776881907)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107165451502.png)]

使用Tensorflow或者Pytorch能简便构建和训练神经网络,不过不能只会用,要弄懂这些代码在干些什么!

前向传播中单个神经元的作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E09VKE2z-1668776881907)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107171347859.png)]

上图为layer n的神经元,接受layer n-1的激活值x1,x2,...,xnx_1,x_2,...,x_nx1​,x2​,...,xn​乘于权重加上偏置bbb,传入激活函数中,得到这个神经元的激活值aaa

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TYSKYtS2-1668776881907)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107172138904.png)]

左侧代码为单个隐藏层的实现代码,右侧为整个四层的神经网络实现代码

矩阵加速运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C2BI5Zx5-1668777037837)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107232411806.png)]

将左侧的代码中的输入数据XXX和偏置bbb都改为矩阵的形式,再利用矩阵相关加速运算

训练模型的细节

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pPh8UmDs-1668777061044)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221108210434373.png)]

训练模型的步骤:

1定义模型
2.定义损失函数
3.最小化损失函数

中间为手写字体识别只包含0,1,的二分类,使用sigmoid激活函数,使用二元交叉熵作为损失函数

右侧为在Tensorflow中训练这个模型的步骤

常用激活函数

ReLU

ReLU全名Rectified Linear Unit,意思是修正线性单元

ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PHExipQ2-1668777079785)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221108212207156.png)]

ReLU激活函数可写为:ReLU(z)=max(0,z)ReLU(z)=max(0,z)ReLU(z)=max(0,z)

Sigmoid

Sigmoid激活函数可写为:Sigmoid(z)=11+e−zSigmoid(z)=\frac{1}{1+e^{-z}}Sigmoid(z)=1+e−z1​

Linear activation function

线性激活函数可写为:g(z)=zg(z)=zg(z)=z

tanh

tanh激活函数可写为:g(z)=1−e−2x1+e−2xg(z)=\frac{1-e^{-2x}}{1+e^{-2x}}g(z)=1+e−2x1−e−2x​

选择激活函数

可以为神经网络中的神经元选择不同的激活函数

选择输出层的激活函数

二分类问题选择Sigmoid激活函数作为输出层的激活函数

回归问题选择线性激活函数作为输出层的激活函数

如果回归问题结果非负可以选择ReLU激活函数作为输出层的激活函数

选择输出层的激活函数时,通常根据输出的预测值y^\hat{y}y^​来选择

选择隐藏层的激活函数

ReLU激活函数是现在神经网络中隐藏层最常用的激活函数

为什么需要非线性激活函数

如果神经网络使用的激活函数都是线性的,那么神经网络就只是线性回归模型,神经网络无法拟合比线性回归更复杂的模型

Softmax激活函数

SoftmaxSigmoid的推广,可以进行多分类任务

Softmax 激活函数:

将输入向量的值映射到(0,1)这个区间,转化为概率的形式,且转化后向量元素和为1,公式为:
向量A=[a1,a2,a3...a4]Tsoftmax(ai)=eai∑j=1keai例如:假设向量a=[3.2,5.1,−5.7]T经过函数运算后asoftmax=[0.127,0.87,0.003]T向量A=[a_1,a_2,a_3...a_4]^T\\ softmax(a_i)=\frac{e^{a_i}}{\sum_{j=1}^ke^{a_i}}\\\\ 例如: 假设向量a=\left[\ \ 3.2,\ \ 5.1,-5.7\ \ \right]^T\\ 经过函数运算后a_{softmax}=\left[\ \ 0.127,\ \ 0.87,\ \ 0.003\ \ \right]^T\\ 向量A=[a1​,a2​,a3​...a4​]Tsoftmax(ai​)=∑j=1k​eai​eai​​例如:假设向量a=[  3.2,  5.1,−5.7  ]T经过函数运算后asoftmax​=[  0.127,  0.87,  0.003  ]T
可以看出softmax激活函数的特性:让小的值变得很小,最大的值变得更大,使得分类效果更加明显更加利于分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1GaYpuFA-1668777181450)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221102214524919.png)]

突出了最大值

损失函数

多标签分类问题

多标签分类,与一般的多分类问题不同,一般的多分类问题,如手写字识别,其真正的标签只有一个,而多标签分类,如下图的人、汽车、公共汽车识别,识别出的结果可能有多个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GfjAKO0k-1668777239595)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221111133202680.png)]

如何解决多分类问题:以上图为例子

1.可以将其视为三个完全独立的机器学习问题,需要三个神经网络分别检测

2.训练一个神经网络同时检测这人、汽车、公共汽车

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j9ZiEFV2-1668777239596)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221111133625341.png)]

梯度下降更好训练神经网络的方式-Adam

wj=wj−α∂∂wjJ(W⃗,b)w_j=w_j-\alpha\frac{\partial}{\partial w_j}J(\vec{W},b) wj​=wj​−α∂wj​∂​J(W,b)

Adam算法,当学习率过小时可以自动增加α\alphaα使得梯度下降的速度更快;

当学习率过大时,也可以使得学习率自动更小。

Adam算法可以自动调整学习率

Adam算法没有使用单一的全局学习率,对模型的每个参数使用不同的学习率如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W86egLy4-1668777271874)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221111141232435.png)]

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...