根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。
当\(n\)很大时,用逻辑回归建立非线性假设并不是一个好做法
模仿了大脑中的神经元(计算单元):树突(input)、轴突(output)
偏置单元(bias unit):\(x_0=1\)
权重(weights/parameters):\(\theta\)
激活函数(activation function):\(g(z)\)
神经网络就是一组神经元连接在一起的集合。
第一层:输入层(input layer)
中间层:隐藏层(hidden layer)
最后一层:输出层(output layer)
\(a_i^{(j)}\):第\(j\)层的第\(i\)个激活项(神经元);
\(\theta^{(i)}\)代表从第\(j\)层映射到第\(j+1\)层时的权重的矩阵。
向量化
\(a_1^{(2)}=g(\theta_{10}^{(1)}x_0+\theta_{11}^{(1)}x_1+\theta_{12}^{(1)}x_2+\theta_{13}^{(1)}x_3\)
\(a_2^{(2)}=g(\theta_{20}^{(1)}x_0+\theta_{21}^{(1)}x_1+\theta_{22}^{(1)}x_2+\theta_{23}^{(1)}x_3\)
\(a_3^{(2)}=g(\theta_{30}^{(1)}x_0+\theta_{31}^{(1)}x_1+\theta_{32}^{(1)}x_2+\theta_{33}^{(1)}x_3\)
↓
令\(z^{(2)}=\Theta^{(1)}x=\theta^{(1)}a^{(1)}\),则\(a^{(2)}=g(z^{(2)})\)
添加\(a_0^{(2)}=1\)
\(z^{(3)}=\Theta^{(2)}a^{(2)},h_\theta(x)=a^{(3)}=g(z^{(3)})\)
其中\(x=\begin{bmatrix}x_0 \\ x_1 \\ x_2 \\ x_3 \\ \end{bmatrix}\quad\),\(z^{(2)}=\begin{bmatrix}z_1^{(2)} \\ z_2^{(2)} \\ z_3^{(2)} \\ \end{bmatrix}\quad\)。
可以知道:每一个\(a\)都是由上一层所有的\(x\)和每一个\(x\)所对应的\(\theta\)决定的。
把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION )
例子
利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。
\(\text{XNOR}=( \text{x}_1\, \text{AND}\, \text{x}_2 )\, \text{OR} \left( \left( \text{NOT}\, \text{x}_1 \right) \text{AND} \left( \text{NOT}\, \text{x}_2 \right) \right)\)
如果我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有4个值。
输出层4个神经元分别用来表示4类,也就是每一个数据在输出层都会出现\([a \ b \ c \ d]^T\),且\(a,b,c,d\)中仅有一个为1,表示当前类。
原文:https://www.cnblogs.com/angelica-duhurica/p/10928012.html