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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 吴恩达深度学习课程总结归纳(一) -> 正文阅读

[人工智能]吴恩达深度学习课程总结归纳(一)

该博客用来做吴恩达深度学习的学习总结归纳。

一、二分分类(Binary Classification)

厘清概念:
在这里,x作为输入端,包含所有信息。y作为输出端,由于这是一个二分分类的问题,所以输出端y的可能性只有两个,在这里以0和1来表示,即y∈{0,1}。而对于不同的输入x(i),则也会对应不同的输出y(i)。这里的i指的是第i个样本。
X作为矩阵形式,包括多项x,其表现形式为X=[x(1) x(2) … x(m)]。对应输出Y也为矩阵形式,包括多项y,表现形式为Y=[y(1) y(2) … y(m)]。
这里给出一个新的表示形式y^hat,如下所示。
y ^ \hat{y} y^?
这里的 y ^ \hat{y} y^?表示的是你对y的预测值。y只能是0和1的某一项,但是毕竟要考虑概率问题,所以需要预测y有多少把握是0或者有多少把握是1,因此 y ^ \hat{y} y^?也就应运而生了。我们一般可以这么表示,用来表示对应某个输入,用算法计算出结果为1的概率。
y ^ = P ( y = 1 ∣ x ) \hat{y}=P(y=1|x) y^?=P(y=1x)

二、logistic回归

在线性回归中会有参数 w w w b b b用来计算,公式为:
y ^ = w T x + b \hat{y}=w^Tx+b y^?=wTx+b
但是深度学习中这个回归不是很好的,因为考虑到你得到的结果 y ^ \hat{y} y^?是一个概率,所以应该收敛到0和1之间。所以怎么办呢?学者们想到了一个好法子,用sigmoid函数!
这里应该强调的是sigmoid函数是一种映射方式!!!
我们这里给出sigmoid函数的公式:
σ ( z ) = 1 1 + e ? z \sigma(z)=\cfrac{1}{1 +e^{-z}} σ(z)=1+e?z1?
这样就将sigmoid函数映射到了0-1的区间范围内。但是也因此带来了z很大但是变化率很小的问题,这在之后就会用ReLU函数做改进,在此暂时不提及。
所以我们有了sigmoid函数,将 w T x + b w^Tx+b wTx+b作为sigmoid输入项 z z z输入到函数中,得到的值作为 y ^ \hat{y} y^?来输出,这样就可以将函数输出值映射到概率区间。
y ^ = σ ( w T x + b ) \hat{y}=\sigma(w^Tx+b) y^?=σ(wTx+b)
所以在实现logistic回归时,我们要做的就是学习参数 w 、 b w、b wb,目标则是得到训练后的样本,在计算测试集中预测值尽可能等于实际值: y ^ ( i ) ≈ y ( i ) \hat{y}^{(i)}\approx y^{(i)} y^?(i)y(i)

损失函数(Loss Function)
这里终于要提到损失函数的定义了。
损失函数用来衡量输出函数 y ^ \hat{y} y^?与实际值 y y y有多接近(或者说有多大的差别)。由于我们会使用梯度下降法,所以平方差不是一个很好的选择,因为它会出现多个局部最优解,非凸函数。(当然误差函数肯定是越小越好的。)
这里给出新定义的损失函数 L ( y ^ , y ) L(\hat{y},y) L(y^?,y)
L ( y ^ , y ) = ? ( y l o g y ^ + ( 1 ? y ) l o g ( 1 ? y ^ ) ) L(\hat{y},y)=-(ylog\hat{y}+(1-y)log(1-\hat{y})) L(y^?,y)=?(ylogy^?+(1?y)log(1?y^?))
在这款损失函数中,如果你的实际值 y = 1 y=1 y=1,那么预测值 y ^ \hat{y} y^?越大才会使损失函数越小。同理如果你的实际值 y = 0 y=0 y=0,那么预测值 y ^ \hat{y} y^?越小才会使损失函数越小。所以这个损失函数是合格的。

成本函数(Cost Function)
成本函数衡量模型在全体训练样本上的表现。定义形式为所有样本损失函数的和。
J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) J(w,b)=\frac{1}{m}\displaystyle\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)}) J(w,b)=m1?i=1m?L(y^?(i),y(i))

三、梯度下降法

我们定义的成本函数本质上是一个凸函数,所以理论上一定会有全局最优解。同时根据凸函数的性质,初始值取在任意一点上,都会随着迭代过程到达全局最优解。
梯度下降法是指选择下降最快的方向进行迭代。方向为:
w = w ? α d J ( w ) d w w=w-\alpha\frac{dJ(w)}{dw} w=w?αdwdJ(w)?
这里梯度下降法对应的是后向传播。从知乎上摘了一段。

前向传播通过训练数据和权重参数计算输出结果;反向传播通过导数链式法则计算损失函数对各参数的梯度,并根据梯度进行参数的更新。

所以我们使用梯度下降法的方式不断更新节点参数,以完成全局最优的过程。
在这里我以前一直很迷惑为什么要使用成本函数同时还能进行 w 、 b w、b wb的修改,后来想了想每次训练都是好多轮训练的过程,所以每一轮训练中保持 w 、 b w、b wb不变是合理的,而不是每训练一个 x ( i ) , y ( i ) x(i),y(i) x(i),y(i)就修改一次参数。

四、向量化

在代码当中,使用多个for循环无疑是愚蠢的。所以我们使用向量化来包含所有特征 x ( i ) x^{(i)} x(i),不然多个for循坏会慢的要死,无论是python还是matlab。
在向量化后,公式改为:
z = w T x + b , w ∈ R n x , x ∈ R n x z=w^Tx+b,w\in R^{n_x},x\in R^{n_x} z=wTx+b,wRnx?,xRnx?
这是向量化的结果。那么我们是否可以接着除去便利所有样本的for循环呢?显然,矩阵化完全满足这一要求:
Z = [ z ( 1 ) . . . z ( m ) ] = w T X + [ b . . . b ] ( w h i c h ? i s ? ( 1 ? m ) ) X = [ x ( 1 ) . . . x ( m ) ] Z=[z^{(1)} ... z^{(m)}]=w^TX+[b...b](which\ is\ (1*m))\\ X=[x^{(1)}...x^{(m)}] Z=[z(1)...z(m)]=wTX+[b...b](which?is?(1?m))X=[x(1)...x(m)]

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-05 20:20:08  更:2021-07-05 20:20:38 
 
开发: 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/17 18:37:10-

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