吴恩达深度学习——深层神经网络

来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。

符号约定

对于该深层网络,有四层,包含三个隐藏层和一个输出层。

隐藏层中,第一层有五个单元、第二层有五个单元,第三层有三个单元。标记 l l l表示层数, l = 4 l=4 l=4。标记 n [ l ] n^{[l]} n[l]表示第几层, n [ 1 ] n^{[1]} n[1]是第一层,有5个节点; n [ 3 ] n^{[3]} n[3]是第三层,有3个节点。 n [ 4 ] n^{[4]} n[4]是输出层,只有一个节点。把输入层也叫 n [ 0 ] n^{[0]} n[0]有三个输入特征, n [ 0 ] = n x = 3 n^{[0]} = n_x=3 n[0]=nx=3。 a [ l ] a^{[l]} a[l]表示第 l l l层中的激活函数,表示为 a [ l ] = g [ l ] ( z [ l ] ) a^{[l]}=g^{[l]}(z^{[l]}) a[l]=g[l](z[l])。

计算矩阵的维度

对于该神经网络,有四个隐藏层和一个输出层。如何计算 W \mathbf{W} W与 b \mathbf{b} b应该开辟多大(维度)?

输入特征是x1,x2,是一个(2,1)的向量。对于第一个隐藏层,从神经网络中看到,输出了(3,1)的向量,由 z [ 1 ] = W [ 1 ] x + b [ 1 ] \mathbf{z}^{[1]}=\mathbf{W}^{[1]}\mathbf{x}+\mathbf{b}^{[1]} z[1]=W[1]x+b[1]代入向量维度,根据矩阵乘法矩阵加法,有(3,1)=(3,2)(2,1)+(3,1)刚好匹配维度。

层次 表达式 计算
n [ 1 ] n^{[1]} n[1] z [ 1 ] = W [ 1 ] x + b [ 1 ] \mathbf{z}^{[1]}=\mathbf{W}^{[1]}\mathbf{x}+\mathbf{b}^{[1]} z[1]=W[1]x+b[1] a [ 1 ] = g ( z [ 1 ] ) \mathbf{a}^{[1]}=g(\mathbf{z}^{[1]}) a[1]=g(z[1]) ( 3 , 1 ) = ( 3 , 2 ) ( 2 , 1 ) + ( 3 , 1 ) (3,1)=(3,2)(2,1)+(3,1) (3,1)=(3,2)(2,1)+(3,1)
n [ 2 ] n^{[2]} n[2] z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] \mathbf{z}^{[2]}=\mathbf{W}^{[2]}\mathbf{a}^{[1]}+\mathbf{b}^{[2]} z[2]=W[2]a[1]+b[2] . . . ... ... ( 5 , 1 ) = ( 5 , 3 ) ( 3 , 1 ) + ( 5 , 1 ) (5,1)=(5,3)(3,1)+(5,1) (5,1)=(5,3)(3,1)+(5,1)
n [ 3 ] n^{[3]} n[3] z [ 3 ] = W [ 3 ] a [ 2 ] + b [ 3 ] \mathbf{z}^{[3]}=\mathbf{W}^{[3]}\mathbf{a}^{[2]}+\mathbf{b}^{[3]} z[3]=W[3]a[2]+b[3] . . . ... ... ( 4 , 1 ) = ( 4 , 5 ) ( 5 , 1 ) + ( 4 , 1 ) (4,1)=(4,5)(5,1)+(4,1) (4,1)=(4,5)(5,1)+(4,1)
n [ 4 ] n^{[4]} n[4] z [ 4 ] = W [ 4 ] a [ 3 ] + b [ 4 ] \mathbf{z}^{[4]}=\mathbf{W}^{[4]}\mathbf{a}^{[3]}+\mathbf{b}^{[4]} z[4]=W[4]a[3]+b[4] . . . ... ... ( 2 , 1 ) = ( 2 , 4 ) ( 4 , 1 ) + ( 2 , 1 ) (2,1)=(2,4)(4,1)+(2,1) (2,1)=(2,4)(4,1)+(2,1)
n [ 5 ] n^{[5]} n[5] z [ 5 ] = W [ 5 ] a [ 4 ] + b [ 5 ] \mathbf{z}^{[5]}=\mathbf{W}^{[5]}\mathbf{a}^{[4]}+\mathbf{b}^{[5]} z[5]=W[5]a[4]+b[5] . . . ... ... ( 1 , 1 ) = ( 1 , 2 ) ( 2 , 1 ) + ( 1 , 1 ) (1,1)=(1,2)(2,1)+(1,1) (1,1)=(1,2)(2,1)+(1,1)

W [ l ] : ( 本层神经元数量 , 上一层神经元数量 ) \mathbf{W}^{[l]}:(本层神经元数量, 上一层神经元数量) W[l]:(本层神经元数量,上一层神经元数量)

为什么使用深层表示

对于一张图片,想建立一个人脸识别系统。当输入一张脸部的照片,隐藏层第一层寻找脸部特征的边缘的方向,然后将边缘层的像素放在一起组成面部的不同部分,最后在将这些放在一起,识别或探测不同的人脸。

搭建神经网络块

参数和超参数

回顾这些公式 z = w x + b z=wx+b z=wx+b a = σ ( z ) a=\sigma(z) a=σ(z) J = − 1 n ∑ n i = 1 [ y i l o g ( y ^ i ) + ( 1 − y i ) l o g ( 1 − y ^ i ) ] J=−\frac{1}{n}\sum_{n}^{i=1} [y_ilog(\hat{y}_i)+(1−y_i)log(1−\hat{y}_i)] J=−n1n∑i=1[yilog(y^i)+(1−yi)log(1−y^i)]

有参数 w w w、 b b b。

在编程的时候,也会引入一些其他的参数,比如学习率 α \alpha α,迭代的次数、隐藏层层数、选用什么激活函数的问题...与 w w w和 b b b不同,这些参数需要自己去设置,被称为超参数,能够控制 w w w和 b b b。对于这些参数的设置是一个很经验的东西。

相关推荐
小笼包包仔8 分钟前
OpenClaw 多Agent软件开发最佳实践指南
人工智能
smallyoung18 分钟前
AgenticRAG:智能体驱动的检索增强生成
人工智能
_skyming_25 分钟前
OpenCode 如何做到结果不做自动质量评估,为什么结果还不错?
人工智能
南山安43 分钟前
手写 Cursor 核心原理:从 Node.js 进程到智能 Agent
人工智能·agent·设计
掘金安东尼1 小时前
如何为 AI 编码代理配置 Next.js 项目
人工智能
aircrushin2 小时前
轻量化大模型架构演进
人工智能·架构
文心快码BaiduComate2 小时前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南3 小时前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
Mintopia4 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮4 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能