Decision boundaries

motivation for non-linear transformation

在线性的 logistic 回归中,hw(x)h_w(x) 大于 0.5 时认为是,小于 0.5 时认为不是

有的时候数据分布不适合使用逻辑回归模型(比如二维平面上一类包住了另一类)

简单采用 adding polynomial terms 的方法并不合适,需要泛化性更强的方法。

解决办法:神经网络

universal approximation theorem 用简单的台阶函数去拟合(?)

Neural networks

人工神经网络

  • algorithm that try to mimic the brain
  • SOTA
  • AlexNet: bid data & GPUs
  • perform well on many tasks

artificial neurons

aka perceptron

y=1 if i=1nwixiθ0y=1\ if\ \sum_{i=1}^nw_ix_i-\theta\ge0, y=0 if i=0nwixiθ<0y=0\ if\ \sum_{i=0}^nw_ix_i-\theta\lt0

θ\theta 被称作偏置 bias

ww 是一种 template, if x matches the template well, the inner product will be larger than the threshold.

普通的线性函数,需要经过 non-linear 的 activation function (e. g. sigmoid).

input layer, hidden layer, output layer

前向传播

某一神经节点 a(1)=xa^{(1)}=x

线性计算 z(j+1)=W(j)a(j)+b(j)z^{(j+1)}=W^{(j)}a^{(j)}+b^{(j)}

经过激活函数 a(j+1)=σ(z(j+!))a^{(j+1)}=\sigma(z^{(j+!)})

思考:如果 jj 层有 sjs_j 个神经元,j+1j+1 层有 sj+1s_{j+1} 个神经元。那么 W(j)W^{(j)} 的大小是?

sj+1s_{j+1}×\timessjs_{j}

相当于输入 x 和第 W 矩阵的对应一行的内积加上偏置,再进入一个激活函数。

NNs learn useful features representations.

MLP multilayer perceptron 多层感知机,就是一个多层的全连接神经网络。

XNOR with NNs

nn can learn complex non-linear functions.

non-XOR tasks

Multi-class classification with NNs

task: learn to predict K classes from given training data

output layer: P(y=kx)P(y=k|x) k-th element of hW,b(x)h_{W,b}(x)

train label aka ground truth: one-hot vectors

Loss functions

cross-entropy for softmax regression

J(W)=ik1{y(i)=k}log(P(y(i)=kx(i)))J(W)=-\sum_i\sum_k\mathbf{1}\{y^{(i)}=k\}\log(P(y^{(i)}=k|x^{(i)}))

loss of neural network

J(W,b)=1nikyk(i)log(hW,b(x(i))k)J(W,b)=-\frac{1}{n}\sum_i\sum_ky_k^{(i)}\log(h_{W,b}(x^{(i)})_k)

Optimization - back propagation

Gradient computation 为什么要用反向传播?因为直接计算梯度很耗时

使用 quadratic loss 进行推导比较简单

J(W,b)=12n(hW,b(x(i))kyk(i))2J(W,b)=-\frac{1}{2n}(h_{W,b}(x^{(i)})_k-y_k^{(i)})^2

需要计算 J(W,b)Wi,j(l)\frac{\partial J(W,b)}{\partial W_{i,j}^{(l)}}J(W,b)bi(l)\frac{\partial J(W,b)}{\partial b_i^{(l)}}

第一步:计算的时候前向传播

第二步:算出 loss,根据损失函数进行求导(链式法则)

δj(l)\delta_j^{(l)} 表示第 l 层第 j 个神经元的 error

δ(l)\delta^{(l)} 是一个向量

假设神经网络有四层:

δ(4)=(a(4)y(k))σ(z(4))\delta^{(4)}=(a^{(4)}-y^{(k)})\odot\sigma'(z^{(4)})

δ(i)=(W(i))Tδ(i+1)σ(z(i))\delta^{(i)}=(W^{(i)})^T\delta^{(i+1)}\odot\sigma'(z^{(i)})

\odot 表示矩阵或向量对应元素相乘

there is no δ(1)\delta^{(1)},因为第一层代表输入 x

得到 ΔW\Delta WΔb\Delta b

ΔWij(l)=ΔWij(l)+aj(l)δi(l+1)\Delta W_{ij}^{(l)}=\Delta W_{ij}^{(l)}+a_j^{(l)}\delta_i^{(l+1)} for i,ji,j in layers l=1L1l=1\cdots L-1

Δbi(l)=Δbi(l)+δi(l+1)\Delta b_i^{(l)}=\Delta b_i^{(l)}+\delta_i^{(l+1)} for ii in layers l=1L1l=1\cdots L-1

更新网络参数