首页 > 其他分享 >吴恩达深度学习deeplearning.ai学习笔记(一)3.9 3.10 3.11

吴恩达深度学习deeplearning.ai学习笔记(一)3.9 3.10 3.11

时间:2024-08-02 13:54:33浏览次数:11  
标签:初始化 吴恩达 函数 ai 3.11 样本 矩阵 神经网络 维度

3.9 神经网络的梯度下降法

对于单隐层神经网络而言,主要参数就是w^{[1]},b^{[1]},w^{[2]},b^{[2]},并且输入特征x的维度可以记为n_x=n^{[0]},第一层有n^{[1]}个隐藏单元,第二层有n^{[2]}个输出单元,目前仅仅见过只有一个输出单元的情况;w^{[1]}的维度是(n^{[1]},n^{[0]})b^{[1]}的维度是(n^{[1]},1)w^{[2]}的维度是(n^{[2]},n^{[1]})b^{[2]}的维度是(n^{[2]},1),成本函数为:

J(w^{[1]},b^{[1]},w^{[2]},b^{[2]})=\frac{1}{m}\sum_{i=1}^{m}L(a^{[2]},y)

训练神经网络时,随机初始化参数很重要,而不是全令其为0;

每个梯度下降循环都要计算1\sim m的预测值,即\hat{y}^{(i)},i=1,2,\cdots,m,然后要计算导数,即dw^{[1]}=\frac{\partial J}{\partial w^{[1]}},db^{[1]},dw^{[2]},db^{[2]},\cdots,最后更新参数,即w^{[1]}=w^{[1]}-\alpha dw^{[1]},b^{[1]}=b^{[1]}-\alpha db^{[1]},\cdots

正向传播过程为:

Z^{[1]}=w^{[1]}X+b^{[1]}

A^{[1]}=\sigma(Z^{[1]})

Z^{[2]}=w^{[2]}A^{[1]}+b^{[2]}

A^{[2]}=\sigma(Z^{[2]})

那么反向传播求导数的方程怎么写?

假设我们在做二元分类,则g^{[2]}(z^{[2]})=\sigma(z^{[2]}),方程如下:

版本:m个样本Back Prop

dZ^{[2]}=A^{[2]}-Y

dw^{[2]}=\frac{1}{m}dZ^{[2]}A^{[1]T}

db^{[2]}=\frac{1}{m}np.sum(dZ^{[2]},axis=1,keepdims=True)

#注意np.sum指令用于对矩阵的一个维度进行求和,axis=1表示水平方向相加求和,而keepdims开关就是防止输出这些秩为1的数组,使db^{[2]}b^{[2]}一样是(n^{[2]},1)维矩阵;

dZ^{[1]}=w^{[2]T}dZ^{[2]}\ast {g^{[1]}}'(Z^{[1]})

#注意符号\ast是指逐个元素乘积,z^{[1]}是一个(n^{[1]},m)维的矩阵,w^{[2]T}dZ^{[2]}也是一个(n^{[1]},m)维的矩阵;

dw^{[1]}=\frac{1}{m}dZ^{[1]}X^T

db^{[1]}=\frac{1}{m}np.sum(dZ^{[1]},axis=1,keepdims=True)

3.10 反向传播的直观学习

单样本Back Prop计算:

以上是针对单样本下的计算图,老吴的这个图很乱,只要看红色箭头即可,每个导数都能求出来,按反向传播一步步来:

da^{[2]}=-\frac{y}{a^{[2]}}+\frac{1-y}{1-a^{[2]}}

dz^{[2]}=a^{[2]}-y

dw^{[2]}=dz^{[2]}a^{[1]T}

db^{[2]}=dz^{[2]}

da^{[1]}=w^{[2]T}dz^{[2]}

dz^{[1]}=w^{[2]T}dz^{[2]}\ast {g^{[1]}}'(z^{[1]})

dw^{[1]}=dz^{[1]}a^{[0]T}

db^{[2]}=dz^{[1]}

(1)(2)式怎么证明?

显然,前面已经推导过了,这里不过是把前面的a改成了a^{[2]}而已;

(3)(4)式怎么证明?

w^{[2]}(n^{[2]},n^{[1]})维,这里n^{[2]}=1,所以w^{[2]},dw^{[2]}都是(1,n^{[1]})维;

w^{[2]}=w_1^{[2]T}=\begin{bmatrix} w_{11}^{[2]} &w_{12}^{[2]} &\cdots & w_{1n^{[1]}}^{[2]} \end{bmatrix}

dw^{[2]}=\begin{bmatrix} dw_{11}^{[2]} &dw_{12}^{[2]} &\cdots & dw_{1n^{[1]}}^{[2]} \end{bmatrix}

a^{[1]}=\begin{bmatrix} a_1^{[1]}\\ a_2^{[1]}\\ \vdots\\ a_{n^{[1]}}^{[1]} \end{bmatrix}

b^{[2]},z^{[2]}都是实数,故由矩阵乘法可得:

z^{[2]}=w^{[2]}a^{[1]}+b^{[2]}=w_{11}^{[2]}a_1^{[1]}+w_{12}^{[2]}a_2^{[1]}+\cdots+w_{1n^{[1]}}^{[2]}a_{n^{[1]}}^{[1]}+b^{[2]}

\therefore dw_{11}^{[2]}=\frac{\partial L(a^{[2]},y)}{\partial w_{11}^{[2]}}=\frac{\partial L(a^{[2]},y)}{\partial z^{[2]}}\frac{\partial z^{[2]}}{\partial w_{11}^{[2]}}=dz^{[2]}a_1^{[1]}

dw_{12}^{[2]}=dz^{[2]}a_2^{[1]}

\cdots

dw_{1n^{[1]}}^{[2]}=dz^{[2]}a_{n^{[1]}}^{[1]}

\therefore dw^{[2]}=\begin{bmatrix} dz^{[2]}a_1^{[1]} &dz^{[2]}a_2^{[1]} &\cdots & dz^{[2]}a_{n^{[1]}}^{[1]} \end{bmatrix}\\=dz^{[2]}\begin{bmatrix} a_1^{[1]} &a_2^{[1]} &\cdots & a_{n^{[1]}}^{[1]} \end{bmatrix}=dz^{[2]}a^{[1]T}

(5)(6)式怎么证明?

a^{[1]},da^{[1]}都是(n^{[1]},1)维,故写为:

da^{[1]}=\begin{bmatrix} da_1^{[1]}\\ da_2^{[1]}\\ \vdots\\ da_{n^{[1]}}^{[1]} \end{bmatrix}

由前面z^{[2]}=w_{11}^{[2]}a_1^{[1]}+w_{12}^{[2]}a_2^{[1]}+\cdots+w_{1n^{[1]}}^{[2]}a_{n^{[1]}}^{[1]}+b^{[2]}可得:

da_1^{[1]}=dz^{[2]}w_{11}^{[2]}

da_2^{[1]}=dz^{[2]}w_{12}^{[2]}

\cdots

da_{n^{[1]}}^{[1]}=dz^{[2]}w_{1n^{[1]}}^{[2]}

\therefore da^{[1]}=\begin{bmatrix} dz^{[2]}w_{11}^{[2]}\\ dz^{[2]}w_{12}^{[2]}\\ \vdots\\ dz^{[2]}w_{1n^{[1]}}^{[2]} \end{bmatrix}=dz^{[2]}\begin{bmatrix} w_{11}^{[2]}\\ w_{12}^{[2]}\\ \vdots\\ w_{1n^{[1]}}^{[2]} \end{bmatrix}=dz^{[2]}w^{[2]T}=w^{[2]T}dz^{[2]}

这里我都有点看不懂了,原来是:

w^{[2]}=w_1^{[2]T}=\begin{bmatrix} w_{11}^{[2]} &w_{12}^{[2]} &\cdots &w_{1n^{[1]}}^{[2]} \end{bmatrix}

z^{[1]},dz^{[1]}都是(n^{[1]},1)维,故写为:

dz^{[1]}=\begin{bmatrix} dz_1^{[1]}\\ dz_2^{[1]}\\ \vdots\\ dz_{n^{[1]}}^{[1]} \end{bmatrix}

所以要分析dz^{[1]},首先分析dz_1^{[1]}

dz_1^{[1]}=\frac{\partial L(a^{[2]},y)}{\partial z_1^{[1]}}=\frac{\partial L(a^{[2]},y)}{\partial a_1^{[1]}}\frac{\partial a_1^{[1]})}{\partial z_1^{[1]}}=da_1^{[1]}\cdot {g^{[1]}}'(z_1^{[1]})

dz_2^{[1]}=da_2^{[1]}\cdot {g^{[1]}}'(z_2^{[1]})

\cdots

dz_{n^{[1]}}^{[1]}=da_{n^{[1]}}^{[1]}\cdot {g^{[1]}}'(z_{n^{[1]}}^{[1]})

\therefore dz^{[1]}=\begin{bmatrix} da_1^{[1]}\cdot {g^{[1]}}'(z_1^{[1]})\\ da_2^{[1]}\cdot {g^{[1]}}'(z_2^{[1]})\\ \vdots\\ da_{n^{[1]}}^{[1]}\cdot {g^{[1]}}'(z_{n^{[1]}}^{[1]}) \end{bmatrix}=\begin{bmatrix} da_1^{[1]}\\ da_2^{[1]}\\ \vdots\\ da_{n^{[1]}}^{[1]} \end{bmatrix}\ast \begin{bmatrix} {g^{[1]}}'(z_1^{[1]})\\ {g^{[1]}}'(z_2^{[1]})\\ \vdots\\ {g^{[1]}}'(z_{n^{[1]}}^{[1]}) \end{bmatrix}\\=da^{[1]}\ast {g^{[1]}}'(z^{[1]})=w^{[2]T}dz^{[2]}\ast {g^{[1]}}'(z^{[1]})

(7)(8)式怎么证明?

\because z^{[1]}=w^{[1]}x+b^{[1]}

\therefore db^{[1]}=dz^{[1]}

w^{[1]}=\begin{bmatrix} w_1^{[1]T}\\ w_2^{[1]T}\\ \vdots\\ w_{n^{[1]}}^{[1]T} \end{bmatrix}=\begin{bmatrix} w_{11}^{[1]} &w_{12}^{[1]} &\cdots & w_{1n^{[0]}}^{[1]}\\ w_{21}^{[1]} &w_{22}^{[1]} &\cdots & w_{2n^{[0]}}^{[1]}\\ \vdots& \vdots & & \vdots\\ w_{n^{[1]}1}^{[1]}& w_{n^{[1]}2}^{[1]} &\cdots & w_{n^{[1]}n^{[0]}}^{[1]} \end{bmatrix}

dw^{[1]}=\begin{bmatrix} dw_{11}^{[1]} &dw_{12}^{[1]} &\cdots & dw_{1n^{[0]}}^{[1]}\\ dw_{21}^{[1]} &dw_{22}^{[1]} &\cdots & dw_{2n^{[0]}}^{[1]}\\ \vdots& \vdots & & \vdots\\ dw_{n^{[1]}1}^{[1]}& dw_{n^{[1]}2}^{[1]} &\cdots & dw_{n^{[1]}n^{[0]}}^{[1]} \end{bmatrix}

z^{[1]}=w^{[1]}x+b^{[1]}=\begin{bmatrix} w_{11}^{[1]} &w_{12}^{[1]} &\cdots & w_{1n^{[0]}}^{[1]}\\ w_{21}^{[1]} &w_{22}^{[1]} &\cdots & w_{2n^{[0]}}^{[1]}\\ \vdots& \vdots & & \vdots\\ w_{n^{[1]}1}^{[1]}& w_{n^{[1]}2}^{[1]} &\cdots & w_{n^{[1]}n^{[0]}}^{[1]} \end{bmatrix}\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_{n^{[0]}} \end{bmatrix}+\begin{bmatrix} b_1\\ b_2\\ \vdots\\ b_{n^{[0]}} \end{bmatrix}\\=\begin{bmatrix} w_{11}^{[1]}x_1+w_{12}^{[1]}x_2+\cdots+w_{1n^{[0]}}^{[1]}x_{n^{[0]}}+b_1^{[1]}\\ w_{21}^{[1]}x_1+w_{22}^{[1]}x_2+\cdots+w_{2n^{[0]}}^{[1]}x_{n^{[0]}}+b_2^{[1]}\\ \vdots\\ w_{n^{[1]}1}^{[1]}x_1+w_{n^{[1]}2}^{[1]}x_2+\cdots+w_{n^{[1]}n^{[0]}}^{[1]}x_{n^{[0]}}+b_{n^{[1]}}^{[1]} \end{bmatrix}=\begin{bmatrix} z_1^{[1]}\\ z_2^{[1]}\\ \vdots\\ z_{n^{[1]}}^{[1]} \end{bmatrix}

\therefore dw_{11}^{[1]}=\frac{\partial L(a^{[2]},y)}{\partial w_{11}^{[1]}}=\frac{\partial L(a^{[2]},y)}{\partial z_1^{[1]}}\frac{\partial z_1^{[1]}}{\partial w_{11}^{[1]}}=dz_1^{[1]}x_1

dw_{12}^{[1]}=dz_1^{[1]}x_2

\cdots

dw_{1n^{[0]}}^{[1]}=dz_1^{[1]}x_{n^{[0]}}

dw_{21}^{[1]}=dz_2^{[1]}x_1

dw_{22}^{[1]}=dz_2^{[1]}x_2

\cdots

dw_{2n^{[0]}}^{[1]}=dz_2^{[1]}x_{n^{[0]}}

\cdots

dw_{n^{[1]}1}^{[1]}=dz_{n^{[1]}}^{[1]}x_1

dw_{n^{[1]}2}^{[1]}=dz_{n^{[1]}}^{[1]}x_2

\cdots

dw_{n^{[1]}n^{[0]}}^{[1]}=dz_{n^{[1]}}^{[1]}x_{n^{[0]}}

\therefore dw^{[1]}=\begin{bmatrix} x_1dz_1^{[1]}& x_2dz_1^{[1]} & \cdots & x_{n^{[0]}}dz_1^{[1]} \\ x_1dz_2^{[1]}& x_2dz_2^{[1]} & \cdots & x_{n^{[0]}}dz_2^{[1]} \\ \vdots &\vdots & & \vdots\\ x_1dz_{n^{[1]}}^{[1]}&x_2dz_{n^{[1]}}^{[1]} & \cdots &x_{n^{[0]}}dz_{n^{[1]}}^{[1]} \end{bmatrix}\\ =\begin{bmatrix} dz_1^{[1]}\\ dz_2^{[1]}\\ \vdots\\ dz_{n^{[1]}}^{[1]} \end{bmatrix}\begin{bmatrix} x_1 & x_2 & \cdots & x_{n^{[0]}} \end{bmatrix}=dz^{[1]}x^T=dz^{[1]}a^{[0]T}

m个样本的训练如何向量化?

笔者虽然证明了向量化的过程,但和前面证明大同小异,故给出总结公式:

版本:m个样本Back prop

dZ^{[2]}=A^{[2]}-Y

dw^{[2]}=\frac{1}{m}dZ^{[2]}A^{[1]T}

db^{[2]}=\frac{1}{m}np.sum(dZ^{[2]},axis=1,keepdims=True)

dZ^{[1]}=w^{[2]T}dZ^{[2]}\ast {g^{[1]}}'(Z^{[1]})

dw^{[1]}=\frac{1}{m}dZ^{[1]}X^T

db^{[1]}=\frac{1}{m}np.sum(dZ^{[1]},axis=1,keepdims=True)

3.11 随机初始化

对于b^{[1]},b^{[2]},\cdots 如果将其全部初始化为0,是可行的;

但不能将w^{[1]},w^{[2]},\cdots 全部初始化为0,甚至不可以将其中任何一个初始化为0;

这是因为,举个例子,一旦把w^{[1]}初始化为0矩阵,那么第一层的所有隐藏单元都是完全对称的,它们将计算同样的函数,甚至不仅a_1^{[1]},a_2^{[1]},a_3^{[1]}\cdots 会都一样,而且反向传播时会使da_1^{[1]},da_2^{[1]},da_3^{[1]}\cdots 都一样,这会使神经网络无论训练多久都会保持这种完全对称性不变,相当不利,多个神经元会干同样的事情,我们想要的是不同的隐藏单元去计算不同的数值函数;

随机化命令如下:

w^{[1]}=np.random.randn((n^{[1]},n^{[0]}))\ast 0.01 

#乘一个很小的数字将权重初始化为很小的随机数;当没有太多隐藏层时一般这个很小的数取0.01即可,但层数深时就应该试试别的数了;

b^{[1]}=np.zeros((n^{[1]},1))

类似地将w^{[2]},b^{[2]},\cdots 初始化;

当你使用\sigma函数或tanh函数激活时,权重太大会导致计算的激活函数值变得很大,使z^{[1]}等落到函数导数很小的部分,降低学习速度;

标签:初始化,吴恩达,函数,ai,3.11,样本,矩阵,神经网络,维度
From: https://blog.csdn.net/weixin_66188523/article/details/140862988

相关文章

  • 吴恩达深度学习deeplearning.ai学习笔记(一)1.2 1.3 1.4
     1.2什么是神经网络? 表示输入特征1.3用神经网络进行监督学习输入一幅图,即Input(x)isaimage;输出一个指数如1~1000,即Output(y)isaobject(1,2,……,1000),来表明这张照片是否是1000个不同图像中的一个,可用于给照片打标签。只有选择好输入x和输出y,才能解决特定的问......
  • 吴恩达深度学习deeplearning.ai学习笔记(一)2.1 2.2 2.3 2.4
    2.1逻辑分类/二元分类 logisticregression经典问题:假如你有一张图片作为输入,你想输出能识别此图的标签,也就是:如果是猫,输出1;如果不是猫,输出0。这是老吴最喜欢的猫检测器;我们用y来表示输出的结果标签;一张图片在计算机中是如何表示的?计算机保存一张图片,要保存三个独立矩阵,分......
  • GitHub Models服务允许开发人员免费查找和试用AI模型
    今天,GitHub宣布推出一项新服务–GitHubModels,允许开发人员免费查找和试用人工智能模型。它将领先的大型和小型语言模型的强大功能直接带给GitHub的1亿多用户。GitHub模型将提供对领先模型的访问,包括OpenAI的GPT-4o和GPT-4omini、微软的Phi3、Meta的Llama3.......
  • 【AI绘画】Black Forest Labs 发布 Flux: 文本到图像模型的下一次飞跃
    Prompt:Extremeclose-upofasingletigereye,directfrontalview.Detailedirisandpupil.Sharpfocusoneyetextureandcolor.Naturallightingtocaptureauthenticeyeshineanddepth.Theword“FLUX”ispaintedoveritinbig,whitebrushstrok......
  • Chrome 桌面版新增 AI 功能,能通过提问搜索你的浏览器历史记录
    谷歌将在Chrome桌面版中推出新的Gemini功能,包括桌面版GoogleLens、购物标签对比功能和自然语言历史搜索。在手机上推出并不断发展的GoogleLens功能,现在终于要在Chrome桌面版上线。它将在地址栏和三点菜单中出现,用户点击后可以选择页面上的一部分,提出更多问题以获取......
  • VulnhubAI-web 1.0靶机详解
    项目地址https://www.vulnhub.com/entry/ai-web-1,353/实验过程将下载好的靶机导入到VMware中,设置网络模式为NAT模式,然后开启靶机虚拟机使用nmap进行主机发现,获取靶机IP地址nmap192.168.47.1-254根据对比可知DC-8的一个ip地址为192.168.47.135扫描Ai-Web......
  • 视频驱动数字人形象,LivePortrait最新模型分享
    LivePortrait是一个由快手可灵团队开发的高级人工智能肖像动画框架,其主要功能是使静态照片中的面部能够模仿动态视频中的表情变化,从而让照片看起来像是活生生的人在做表情。LivePortrait采用了基于隐式关键点的方法,而不是传统的扩散方法,来从单一的源图像生成高质量且生动的视......
  • 设备管理系统AI大模型应用RAG案例
    设备管理系统-AI大模型应用RAG案例设备管理系统功能   设备管理系统是为企业设备管理设计的软件,它通过数字化和自动化的方式,帮助企业提高管理效率和准确性。主要功能点:设备档案管理:帮助企业建立完整的设备档案,记录设备基本信息,如名称、型号、规格、供应商等,便于查询和管理。设......
  • Oracle归档日志异常增长问题的排查过程 转载 : https://blog.csdn.net/3moods/article
    Oracle归档日志是Oracle数据库的重要功能,用于将数据库的重做日志文件(RedoLog)保存到归档日志文件(ArchiveLog)中。归档日志的作用是提供数据库的备份和恢复功能,以及支持数据库的持续性和数据完整性。当数据库处于归档模式时,数据库引擎会将已经写满的重做日志文件保存到归档日志文件......
  • 商业银行国际结算规模创新高,合合信息AI助力金融行业智能处理多版式文档
    随着我国外贸新业态的快速增长,银行国际结算业务在服务实体经济发展、促进贸易投资便利化进程中发挥了越来越重要的作用。根据中国银行业协会近日发布的《中国贸易金融行业发展报告(2023—2024)》,2023年我国主要商业银行国际结算规模再创历史新高,达到11.57万亿美元,较上一年增幅4.4%。......