吴恩达深度学习_第一课(3)《浅层神经网络》

2023-10-08 04:20

本文主要是介绍吴恩达深度学习_第一课(3)《浅层神经网络》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

神经网络概览

符号变化

变量上标是圆括号 (1),(2),(3)…(i) 表示第 i 个样本的数据:x(1),x(2)
变量上标是方括号[1],[2],[3]…[i] 表示第 i 层layer的数据:x[1],x[2]

举个例子:
在这里插入图片描述
x作为输入进入第一层,配合W[1]和b[1]进行计算,得到第一层结果a[1];a[1]作为第二层的输入,配合W[2]和b[2]进行计算,得到第二层结果a[2],并计算本次前向传播的损失函数。

类似于单层逻辑回归中的反向传播需要计算dz和da
在这里插入图片描述
在神经网络中,根据对某层参数w和b的偏导,也有dz[2],da[2],dw[2],db[2]
在这里插入图片描述

神经网络表示

神经元结构

单个结点中包含当前层的w和b,并在本结点内使用激活函数激活输出值。
在这里插入图片描述

神经网络结构

神经网络大体主要有输入层、隐藏层、输出层。
在这里插入图片描述
输入层的向量x,即激活值(第0层作为输入,没有激活函数)可以写成a[0]
隐藏层的激活值为a[1],例如这里的四个节点,分别记作a1[1],a2[1],a3[1],a4[1],类似右边这个4维矩阵的存储形式
隐藏层输出值作为输出层的输入值,激活后的激活值为a[2],等于预测值 y ^ \widehat{y} y
通常输入层(第0层)不计入总层数,因此,上图为2层网络
在这里插入图片描述
这里w[1].shape是(4,3),其中4是因为有4个隐藏单元,3是因为有3个输入特征。

计算神经网络的前向输出

神经元在第1层运算本层激活值的运算:
在这里插入图片描述
具体维度运算:
思想:当某层有多个结点时,纵向堆叠本层结点的运算结果:Z,a
在这里插入图片描述
(4,3)的原因:因为x有三个变量x1,x2,x3,所以w也是(3,1)列向量,为了能点乘需要w.T(1,3),又因为w[1]是w1,w2,w3,w4竖着拼起来组合,所以w[1]是(4,3)
在手写的表示中,W[1]使用大写W,而不是w。已经默认为参数向量转置再拼起来组成的矩阵,不需要类似w加上转置符号写成W[1] T

  • 下图右侧列出本网络两层结构的公式。在这里插入图片描述
    W[1]是内部转置的(4,3)矩阵,最终输出为a[1](4,1)。
    因为第2层只有一个结点,输入4个参数,所以W[2]在内部对w(4,1)转置,得到W[2](1,4),计算得到z[2](1,1),最终输出 y ^ \widehat{y} y =a[2](1,1)

单个样本向下一层传输时,输出尽量调整为纵向形式,也方便下一层直接使用纵向形式。

多个样本尽量将单个样本横着拼成一个矩阵,包括输出也尽量横着拼,类似上周作业里面的样本矩阵 X_train:(12288,209)

多个样本的向量化

列出所有情况及符号说明

若有m个样本,会产生m个预测值 y ^ \widehat{y} y ,下面紫色标记解释a[2](i)的意义:方括号是第2层,圆括号是第i个样本
在这里插入图片描述

向量化处理

在这里插入图片描述

红色输入矩阵X中,将图片所有像素值nx纵向排列形成单个样本的输入值,将不同样本的输入值x(1),x(2)…横向拼成矩阵X

紫色输出矩阵Z[1]代表第1层隐藏层的输出,每一列代表某单个样本在第1层的输出结果,多个样本的输出结果向量z[1](1),z[1](2)横向拼接成矩阵Z

在这里插入图片描述

绿色激活值矩阵A[1]代表第1层隐藏层的激活值输出,每一列a[1](1),a[1](2)…分别代表某单个样本的激活值,每列的激活值横向拼成矩阵A
横向是训练样本training example,纵向是隐藏层单元hidden unit
以线代中的矩阵为例,矩阵中[0][0]位置的值是第1个样本经过第1隐藏层的第1个神经元的激活值;[1][0]位置的值是第1个样本经过第1隐藏层的第2个神经元的激活值;[0][1]位置的值是第2个样本经过第1隐藏层的第1个神经元的激活值…

向量化实现的解释

下图表示在第1隐藏层,各样本输出的向量表示。(别忘了 W[1]里面是已经转置过的参数w向量)
在这里插入图片描述

激活函数

为什么需要激活函数

如果使用线性激活函数,神经网络只是把输入线性组合进行输出,无论多深,都只是进行线性计算,会导致隐藏层失效,成为最简单的逻辑回归函数。

通常使用线性激活函数的地方是输出层

常用激活函数

在之前惯用sigmoid函数的隐藏层和输出层,可以使用别的函数,可以是非线性函数。
在这里插入图片描述
通常使用g(z)表示,并且可以用g[1],g[2]…区别不同层的激活函数。

tanh函数:类似将sigmoid函数简单平移,但是几乎所有场合都比sigmoid更加优越,因为平均值更加接近0,更便于后续运算。tanh与sigmoid共有缺点:当z极大/极小,斜率趋于0,拖慢梯度下降

ReLU函数:在输入是负值的情况下,使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解过拟合。是最常用的激活函数

一些经验:

  • 输出为0 / 1,仅在二元分类,sigmoid函数适合作为输出层激活函数,其他时候几乎不用
  • 不确定隐藏层用哪个,使用ReLU

神经网络的梯度下降

回顾一下大致思想:计算预测值,计算损失函数及成本函数,计算偏导,梯度下降更新参数…循环往复 在这里插入图片描述

分为前向传播,反向传播。正向传播容易分析,反向传播的导数公式推导可看可不看。
在这里插入图片描述
公式推导:类似逻辑回归,需要推导da[2],dz[2],db[2],dw[2],da[1],db[1],dz[1],dw[1]这些导数值。
在这里插入图片描述
左侧da[1],dz[1]的链式推导如下(省略等式右边的偏导符号;没有考虑矩阵,所以没有转置):
在这里插入图片描述

另外的dw[1],db[1] 直接类似 dw[2],db[2]求法即可。
在这里插入图片描述
至于为什么dz[1]中的w[2]要转置,是因为w[2]维度是(n[2],n[1]),dz[2]维度和z[2]维度一致,都是(n[2],m),z[1]维度也是(n[1],m)。因此对w[2]进行转置。(维度原因参考下一周课程)

随机初始化

神经网络中若参数矩阵初始化为0,会导致梯度下降失效

在这里插入图片描述

第一隐藏层的w和b都被初始化为0,会导致计算出来a1和a2相等,翻过来导致两个第一隐藏层单元 对 第二隐藏层输出单元的影响一致,且永远一致,无法体现多个隐藏单元的效果。导致退化为多层单个神经元网络。

对于上面这个网络的正确做法:
w1=np.random.radn((2,2))*0.01
b1=np.zero((2,1))
w2=np.random.radn((1,2))*0.01
b2=0

在这里插入图片描述

使用乘0.01是为了防止梯度消失/梯度爆炸

数据线性可分/不可分

所谓可分是指可以没有误差地分开

简单的说就是如果用一个线性函数可以将两类样本完全分开,就称这些样本是线性可分的。
比如二维空间中的直线、三维空间中的平面以及高维空间中的线性函数

判断是否线性可分:

不同样本集用凸包包起来,判断不同凸包的边是否有交叉。(凸包概念:如果给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集合中所有的点。)

这篇关于吴恩达深度学习_第一课(3)《浅层神经网络》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/162653

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个