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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 《DeepLearning.ai》第二课(1):神经网络的编程基础 -> 正文阅读

[人工智能]《DeepLearning.ai》第二课(1):神经网络的编程基础

第二课(1):神经网络的编程基础

2.1 二分类(binary classification)

遍历m个样本的训练集,神经网络通常不进行for循环遍历,神经网络计算中先进行前向传播,后进行反向传播

逻辑回归是一个用于二分类的算法

例:加入图片大小为64*64像素,保存图片需要分别保存三个矩阵(红、绿、蓝三个颜色通道)

二分类

将所有颜色通道保存,得到 x x x的总维度为 64 ? 64 ? 3 64*64*3 64?64?3,因此 n x = 12288 n_x=12288 nx?=12288?表示特征向量的纬度,如图所示,用小写 n n n表示特征向量 x x x?的纬度。因此问题转化为二分类中找到一个分类器输入图片的特征向量,预测输出结果 y = 1 / 0 y=1/0 y=1/0?,即预测图片中是否有猫。

符号定义:

对于一个单独的样本 ( x , y ) (x,y) (x,y),

x x x:表示一个 n x n_x nx?维数据,为输入数据,纬度为 ( n x , 1 ) (n_x,1) (nx?,1);

y y y:表示输出结果,取值为 ( 0 , 1 ) (0,1) (0,1);

( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)):表示第 i i i组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;例: ( x ( 1 ) , y ( 1 ) ) (x^{(1)},y^{(1)}) (x(1),y(1))表示第一个样本的输入和输出,以此类推。?

X = [ x ( 1 ) , x ( 2 ) , . . . , x ( m ) ] X=[x^{(1)},x^{(2)},...,x^{(m)}] X=[x(1),x(2),...,x(m)]:表示所有的训练数据集的输入值,放在一个 n x ? m n_x*m nx??m的矩阵中,其中 m m m表示样本数目,通常在python中用X.shape()来输出矩阵的纬度,即 n x ? m n_x*m nx??m?;

Y = [ y ( 1 ) , y ( 2 ) , . . . , y ( m ) ] Y=[y^{(1)},y^{(2)},...,y^{(m)}] Y=[y(1),y(2),...,y(m)]?:表示所有训练数据集的输出值,纬度为 1 ? m 1*m 1?m??,Y.shape()

m m m?:表示样本的个数,对于训练集 m t r a i n m_{train} mtrain???,对于测试集 m t e s t m_{test} mtest??


2.2 逻辑回归(Logistic Regression)

对一个算法进行预测通常是 y ^ \widehat{y} y ??,也就是对实际值 y y y?的估计,即 y ^ \widehat{y} y ??表示 y = 1 y=1 y=1?的可能性或者是机会,前提是给定了输入特征 X X X?。用 w w w??来表示逻辑回归的参数,即特征权重?,维度与特征向量相同,b为表示偏差的实数(相当于机器学习课程中的偏置项 x 0 = 1 , b = θ 0 x_0=1,b=\theta_0 x0?=1,b=θ0??), y ^ = w T x + b \widehat{y}=w^Tx+b y ?=wTx+b?。该线性函数对于二分类问题来说并不是好算法。

逻辑回归

希望 y ^ \widehat{y} y ?介于 0 ? 1 0-1 0?1之间,因此引入一个函数,即 s i g m o i d sigmoid sigmoid?函数作用在输出上,如上图所示。

下图表示 s i g m o i d sigmoid sigmoid函数:

sigmoid函数

s i g m o i d sigmoid sigmoid函数公式如下:
σ ( z ) = 1 1 + e ? z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e?z1?
z z z是实数, z z z?无穷大时 e ? z e^{-z} e?z将会接近0,则 s i g m o i d sigmoid sigmoid函数将接近1,相反 z z z负无穷小, s i g m o i d sigmoid sigmoid?函数将接近0.

下一步要训练参数 w w w和参数 b b b?,因此需要定义一个代价函数。


2.3 逻辑回归的代价函数(Logistic Regression Cost Function)

为了训练参数 w w w b b b,需要定义代价函数,下面是逻辑回归的输出函数

逻辑回归的代价函数

上标 ( i ) (i) (i)表示数据的第 i i i个训练样本。

逻辑回归中的损失函数:
L ( y ^ , y ) = ? y l o g ( y ^ ) ? ( 1 ? y ) l o g ( 1 ? y ^ ) L(\widehat{y},y)=-ylog(\widehat{y})-(1-y)log(1-\widehat{y}) L(y ?,y)=?ylog(y ?)?(1?y)log(1?y ?)
不使用预测值与实际值平方差的原因:采用这种方法找不到全局最优值。

需要保证损失函数尽可能小

y = 1 y=1 y=1时,损失函数 L = ? l o g ( y ^ ) L=-log(\widehat{y}) L=?log(y ?),要保证损失函数尽可能小,则 y ^ \widehat{y} y ?尽可能大。因为 s i g m o i d sigmoid sigmoid函数取值为 [ 0 , 1 ] [0,1] [0,1],所以 y ^ \widehat{y} y ?会无限接近于 1 1 1?。

y = 0 y=0 y=0时同样道理。

课程中很多情况类似,如果 y = 1 y=1 y=1,我们尽可能让 y ^ \widehat{y} y ?变大,如果 y = 0 y=0 y=0,我们尽可能让 y ^ \widehat{y} y ??变小。

损失函数通常用来衡量单个训练样本的表现,当需要衡量全部训练样本的表现时,我们定义算法的代价函数,代价函数是对 m m m个样本的损失函数求和然后除以 m m m:
J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = 1 m ∑ i = 1 m ( ? y ( i ) l o g y ^ ( i ) ? ( 1 ? y ( i ) ) l o g ( 1 ? y ^ ( i ) ) ) J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\widehat{y}^{(i)},y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(-y^{(i)}log\widehat{y}^{(i)}-(1-y^{(i)})log(1-\widehat{y}^{(i)})) J(w,b)=m1?i=1m?L(y ?(i),y(i))=m1?i=1m?(?y(i)logy ?(i)?(1?y(i))log(1?y ?(i)))
因此,我们需要找到合适的 w w w b b b,使得代价函数 J J J?的总代价降到最低。可以认为逻辑回归可以看做是一个非常小的神经网络。


2.4 梯度下降法(Gradient Descent)

在测试集上,通过最小化代价函数(成本函数) J ( w , b ) J(w,b) J(w,b)来训练参数 w w w b b b

梯度下降

梯度下降形象化:

梯度下降形象化

实际值 w w w可以是更高纬度,如图代价函数是一个凸函数,像一个大碗一样,

学习率
w : = w ? α d J ( w , b ) d w w:=w-\alpha\frac{dJ(w,b)}{dw} w:=w?αdwdJ(w,b)?

b : = b ? a d J ( w , b ) d b b:=b-a\frac{dJ(w,b)}{db} b:=b?adbdJ(w,b)?

梯度下降法:重复迭代如上两个公式

其中 α \alpha α??为学习率(Learning rate),用来控制步长,导数也就是斜率,这块没有找到那个希腊字母,用d代替求偏导数符号。


2.5 导数(Derivatives)

PASS


2.6 更多导数例子(More Derivative Examples)

PASS


2.7 计算图(Computation Graph)

计算图


2.8 使用计算图求导数

计算图求导

链式求导法则

程序中我们通常用 d v a r dvar dvar?来表示导数


2.9 逻辑回归中的梯度下降(Logistic Regression Gradient Descent)

单个样本的梯度下降算法更新:
w 1 = ? a d w 1 , w 2 = w 2 ? a d w 2 , b = b ? α d b w_1=-adw_1,w_2=w_2-adw_2,b=b-\alpha db w1?=?adw1?,w2?=w2??adw2?,b=b?αdb


2.10 m个样本的梯度下降

损失函数的定义:
J ( w , b ) = 1 m ∑ i = 1 m L ( a ( i ) , y ( i ) ) = 1 m ∑ i = 1 m ( ? y ( i ) l o g a ( i ) ? ( 1 ? y ( i ) ) l o g ( 1 ? a ( i ) ) ) J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(a^{(i)},y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(-y^{(i)}loga^{(i)}-(1-y^{(i)})log(1-a^{(i)})) J(w,b)=m1?i=1m?L(a(i),y(i))=m1?i=1m?(?y(i)loga(i)?(1?y(i))log(1?a(i)))
m个样本的梯度下降

上面只进行了一步梯度下降,实际中需要重复该内容很多次。

缺点:需要两个for循环,第二个循环用来遍历所有特征,(通常for循环使得算法效率降低)

处理大量数据通常使用向量化的方法,下节课见


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

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