Coursera - 机器学习技法 - 课程笔记 - Week 12

Neural Network

Motivation

  • 使用线性融合的思想组合多个感知机: F ( x ) = sign ⁡ ( ∑ t α t sign ⁡ ( w t T x ) ) F(\bold x) = \operatorname{sign}(\sum_t \alpha_t \operatorname{sign}(\bold w_t^T \bold x)) F(x)=sign(tαtsign(wtTx))
    • 两层权重 α \alpha α w \bold w w
    • 两层符号函数
  • 足够多的感知机可以提供强大的能力以及平滑的边界
    • 还是有一些线性不可分的问题无法解决
    • 线性不可分——再做转换?
    • 多层感知器——神经网络

Neural Network Hypothesis

  • 转换函数:常用 tanh ⁡ ( x ) \tanh(x) tanh(x)
    • 模拟解决函数
    • 易于已与优化
    • 解决生物神经元
    • tanh ⁡ ( x ) = 2 θ ( 2 s ) − 1 \tanh(x) = 2 \theta(2s) - 1 tanh(x)=2θ(2s)1
  • 神经网络
    • 1 ≤ l ≤ L 1 \le l \le L 1lL
    • 0 ≤ i ≤ d ( l − 1 ) 0 \le i \le d^{(l - 1)} 0id(l1)个输入(含偏置项)
    • 1 ≤ j ≤ d ( l ) 1 \le j \le d^{(l)} 1jd(l)个输出
    • 分数计算 s j ( l ) = ∑ i = 0 d ( l − 1 ) w i j ( l ) x i ( l − 1 ) s_j^{(l)} = \sum_{i = 0}^{d^{(l - 1)}} w_{ij}^{(l)} x_i^{(l - 1)} sj(l)=i=0d(l1)wij(l)xi(l1)
    • 非输出层的输出-输入转化: x j ( l ) = tanh ⁡ ( s j ( l ) ) x_j^{(l)} = \tanh(s_j^{(l)}) xj(l)=tanh(sj(l))
  • 神经网络:反应若干层的转化模式

Neural Network Learning

  • 目标:学习所有的 w i j ( l ) w_{ij}^{(l)} wij(l)以最小化 E i n ( { w i j ( l ) } ) E_{in}(\{w_{ij}^{(l)}\}) Ein({wij(l)})
  • 一个隐藏层:只是对感知机的简单融合——Gradient Boosting,逐个神经元加入到隐藏层
  • 多个隐藏层就不能这么做——GD?逐步误差最佳化?KaTeX parse error: Undefined control sequence: \part at position 8: \frac {\̲p̲a̲r̲t̲ ̲E}{\part w_{ij}…
  • 链式求导,平方误差为例
    • KaTeX parse error: Undefined control sequence: \part at position 8: \frac {\̲p̲a̲r̲t̲ ̲E}{\part w_{i1}…
    • KaTeX parse error: Undefined control sequence: \part at position 8: \frac {\̲p̲a̲r̲t̲ ̲E}{\part w_{ij}…
    • δ j ( l ) \delta_j^{(l)} δj(l)即从输出层累计而来的梯度,其收到下一层所有神经元的影响
    • KaTeX parse error: Undefined control sequence: \part at position 25: …{(l)} = \frac {\̲p̲a̲r̲t̲ ̲E}{\part s_{j}^…
    • 梯度可以逐层回传——BP算法
  • BP算法(SGD):
    • 随机选择一个点 n ∈ { 1 , 2 m … , N } n \in \{1, 2m \ldots, N\} n{1,2m,N}
    • 正向:计算所有的 x i ( l ) x_i^{(l)} xi(l)
    • 反向:计算所有的 δ J ( l ) \delta_J^{(l)} δJ(l)
    • 梯度下降算法: w i j ( l ) ← w i j ( l ) − η x i ( l − 1 ) δ J ( l ) w_{ij}^{(l)} \gets w_{ij}^{(l)} - \eta x_{i}^{(l - 1)}\delta_J^{(l)} wij(l)wij(l)ηxi(l1)δJ(l)
    • 返回最终的 g ( x ) g(x) g(x)
  • SGD按照小组数据同时完成——mini-batch

Optimization and Regularization

  • 对于多层神经网络,误差函数往往非凸——很难找到最优解
    • GD算法往往是找到一个局部最优解
    • 不同的初始权重往往会到达不同的局部最优解
    • 如果初始权重很大,会导致梯度非常小——随机的小值
  • 对于使用tanh函数的网络,复杂度大约为 d V C = O ( V D ) d_{VC} = O(VD) dVC=O(VD)
    • V为神经元数量
    • D为权重数量
    • 优势:足够多的神经元可以近似任意函数
    • 劣势:很容易过拟合
  • 正则化:L2正则化 Ω ( w ) = ∑ ( w i j ( l ) ) 2 \Omega(\bold w) = \sum (w_{ij}^{(l)})^2 Ω(w)=(wij(l))2
    • 收缩权重
    • 稀疏化——降低复杂度——L1正则化,但是不可微分
      • 放缩版L2——所有的权重都等程度地缩小
    • 改进的L2正则项 ∑ ( w i j ( l ) ) 2 1 + ( w i j ( l ) ) 2 \sum \frac {(w_{ij}^{(l)})^2}{1 + (w_{ij}^{(l)})^2} 1+(wij(l))2(wij(l))2
  • 迭代次数
    • 更多的迭代次数,有更多的权重融合可能
    • 小的迭代次数可以有效降低 d V C d_{VC} dVC
    • 在中途合适的位置终止迭代——提前终止
    • 使用Validation决定提前终止的迭代次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值