吴恩达人工智能学习笔记

第一部分

第三周 浅层神经网络

3.6 激活函数

  1. 默认用 ReLU,学习速度更快。
  2. 一般用 tanh 代替 sigmoid。
  3. 二分类时,输出端为(0,1),可以用sigmoid。
  4. ReLU 缺点是负数梯度为0,在实践中无影响,因为有足够多z>0的节点,保证ReLU的梯度存在。
  5. 可用 leaky ReLU 修正。

3.7 为什么需要非线性的激活函数

  1. 这样输出就是输入的线性组合。
  2. 回归问题的输出层,可以用线性激活函数。若非负,也可以用ReLU代替。
  3. 和压缩有关的一些非常特殊的情况,会在隐藏层用输出函数。

3.8 激活函数的导数

  1. sigmoid函数的导数是σ(z)(˙1−σ(z))\sigma(z)\dot(1-\sigma(z))σ(z)(˙1σ(z))
  2. tanh函数的导数是1−tanh2(z)1-tanh^2(z)1tanh2(z)
  3. 对于sigmoid 和 tanh 函数,当z非常大时,导数趋于零。
  4. ReLU函数的导数是(0 if z&lt;0)(1 if z&gt;0)(0~if ~z&lt;0 )(1 ~if~z&gt;0)(0 if z<0)(1 if z>0)
  5. Leaky ReLU函数的导数是(0.01 if z&lt;0)(1 if z&gt;0)(0.01~if ~z&lt;0 )(1 ~if~z&gt;0)(0.01 if z<0)(1 if z>0)

3.9 神经网络中的梯度下降法

  1. ???没太看懂
  2. 用np.sum(dz,axis=1,keepdim=True), keepdim防止将维度降至奇怪的(n,)用np.sum(dz,axis=1,keepdim=True), keepdim防止将维度降至奇怪的(n,)

3.10 直观理解反向传播

  1. 从误差函数开始,求每个参数对误差函数的导数。
  2. ???没有学完

3.11 随机初始化

  1. 如果将所有参数w初始为0,反向传播将失效。
  2. 因为同层的隐藏单元做同样的事情。
  3. w_1=np.random.randn((2,2))*0.01
  4. b_1=np.zeros((2,1))
  5. 通常把权重矩阵w初始化成一个非常小的数,因为当用sigmoid激活函数时,可以获得较大梯度值。
  6. 如果网络中没有sigmoid激活函数,则可以用较大数初始化w。
  7. 当神经网络很深的时候,会选用0.01之外的常数。

第四周 深层神经网络

4.1 深层神经网络

  1. 神经网络的层数只算隐藏层,不算输出层。
  2. LLL:表示层数
    n[L]n^{[L]}n[L]:表示每层的节点数
    a[L]a^{[L]}a[L]:表示每层的激活函数
    x=a[0]:x=a^{[0]}:x=a[0]表示输入特征

4.2 深层网络中的前向传播

  1. 和浅层前向传播一样,每一层的节点用向量化技术(矩阵)技术,层到层之间只能用for循环。

4.3 核对矩阵的维数

  1. debug时,在纸上写一遍算法中所以矩阵的维数
  2. dw[l]=w[l]=(n[l],n[l−1])dw^{[l]}=w^{[l]}=(n^{[l]},n^{[l-1]})dw[l]=w[l]=(n[l],n[l1])
  3. db[l]=b[l]=(n[l],1)db^{[l]}=b^{[l]}=(n^{[l]},1)db[l]=b[l]=(n[l],1)
  4. z[l]=a[l]=(n[l],1)z^{[l]}=a^{[l]}=(n^{[l]},1)z[l]=a[l]=(n[l],1) 未使用向量化技术
  5. Z[l]=A[l]=(n[l],m)Z^{[l]}=A^{[l]}=(n^{[l]},m)Z[l]=A[l]=(n[l],m) 使用向量化技术,m是样本个数
  6. dZ[l]=dA[l]=(n[l],m)dZ^{[l]}=dA^{[l]}=(n^{[l]},m)dZ[l]=dA[l]=(n[l],m)

4.4 为什么使用深层表示

  • 人脸识别中:
  1. 第一层可以是特征检测器,或边缘检测器,每一个单元对应不同方向的边缘。
  2. 第二层可以识别各个器官,每一个单元对应眼睛,嘴巴,鼻子等等。
  3. 第三层把这些不同的器官放到一起,就组成了不同的人脸。
  • 语音识别:
  1. 第一层探测 低层次的音频波形的特征,比如音调变高低,白噪声还是吱吱声。
  2. 第二层探测声位,比如a,i,o…第二层探测声位,比如a,i,o…
  3. 第三层可以识别单词,第四层识别词组…知道完整的句子
  • 电路理论:浅层需要指数级2n2^n2n的节点,深层需要log(n)log(n)log(n)

  • 遇到一个问题时,从浅层开始,把层数当成一个参数或者超参数调试。

4.5 搭建深层神经网络块

  1. 前向传播:
    输入:A[l−1]A^{[l-1]}A[l1]
    输出:A[l]A^{[l]}A[l]
  2. 后向传播:
    输入:dA[l]dA^{[l]}dA[l]Z[l]Z^{[l]}Z[l]
    输出:dA[l−1]dA^{[l-1]}dA[l1]
  3. 计算前向传播时,把Z[l]Z^{[l]}Z[l]缓存起来
  4. 如图所示
    计算示意图

4.6 前向和反向传播

  • 没有看完
  • Forward propagation:
    Input a[l−1]a^{[l-1]}a[l1]
    Output a[l]a^{[l]}a[l],cache(z[l]z^{[l]}z[l])
  • Backward propagation:
    Input da[l]da^{[l]}da[l]
    Output da[l−1]da^{[l-1]}da[l1],dW[l]dW^{[l]}dW[l],db[l]db^{[l]}db[l]
    前向和反向传播

4.7 参数 VS 超参数

  1. 参数:W1,b1,W2,b2...W1, b1,W2, b2 ...W1,b1,W2,b2...
  2. 超参数:
    学习率:α\alphaα
    迭代循环次数:
    隐藏层数:LLL
    隐藏单元数:n[l]n^{[l]}n[l]
    激活函数:
  3. 在下周课程中会系统的讲解超参数的设置。
  4. 最优超参数是会变得,随着GPU或者其他。

4.8 这和大脑有什么关系

  1. 这种类比已经落后了,少说…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值