ref: 深度学习基础介绍 机器学习19 神经网络NN算法python
ref: 深度学习基础介绍 机器学习11 神经网络算法应用上算法
ref: 深度学习基础介绍 机器学习12 神经网络算法应用下网络
ref: 神经网络NN算法(应用篇)机器学习
1. 组成部分:输入层(input layer),隐藏层(hidden layer),输出层(output layer)ide
2. 每层由单元(units)组成(圆圈)函数
3. input layer 是由训练集的实例特征向量传入post
4. 通过链接结点的权重(weight)传入下一层,一层的输出是下一层的输入学习
5. hidden layer 的个数是任意的,input layer 有一层,output layer 有一层测试
6. 每一个 unit 也能够被称做神经结点,根据生物学来源定义优化
7. 以上为2层的神经网络(输入层不算)
8. 一层中加权的求和,而后根据非线性方程转化输出
9. 做为多层向前神经网络,理论上,若是有足够多的隐藏层(hidden layers)和足够大的训练集,能够模拟任何方程
1. 使用神经网络训练数据以前,必须肯定神经网络的层数,以及每层单元的个数
2. 特征向量在被传入输入层时一般被先标准化(normalize)到0和1之间(为了加速学习过程)
3. 离散型变量能够被编码成每个输入单元对应一个特征值可能赋的值
好比:特征值A可能取三个值(a0, a1, a2),可使用3个输入单元来表明A
4. 神经网络既能够用来作分类(classification)问题,也能够解决回归(regression)问题
5. 交叉验证方法(Cross-Validation)
K-fold cross validation
上图分红3分
6. Backpropagation 算法
6.1 经过迭代性的来处理训练集中的实例
6.2 对比通过神经网络后输入层预测值(predicted value)与真实值(target value)之间
6.3 反方向(从 输出层 => 隐藏层 => 输入层)来以最小化偏差(error)来更新每一个链接的权重(weight)
6.4 算法详细介绍
6.4.1 由输入层向前传送,计算后面 units 的值
经过下面公式实现:
\[I_{j}=\sum_{i}\omega_{ij}O_{i}+\Theta_{j}\]
其中:
$i$ —— 对应前面的单元,$j$ 对应后面的单元
$\omega_{ij}$ —— 为权重
$O_{i}$ —— 为前一层的单元值
$\Theta_{j}$ —— 为偏向 bias
$I_{j}$ —— 为计算结果
公式实现以下图所示:
激活函数
$$O_{j}=\frac{1}{1+e^{-I_{j}}}$$
Sigmoid 函数,激活函数
其中:
$O_{j}$ —— 为实际的计算值
6.4.2 根据偏差(error)反向传送
1) 对于输出层:(求导实现的)
$$Err_{j}=O_{j}(1-O_{j})(T_{j}-O_{j})$$
其中:
$T_{j}$ —— 为真实值
2) 对于隐藏层:(求导实现的)
$$Err_{j}=O_{j}(1-O_{j})\sum_{k}Err_k\omega_{jk}$$
其中:
$Err_k$ —— 为前面一层,至关于后面一层的偏差
$\omega_{jk}$ —— 为前面一层,至关于后面一层的权重
3) 权重更新:
$$\Delta\omega_{ij}=(l)Err_{j}O_{i}$$
$$\omega_{ij}=\omega_{ij}+\Delta\omega_{ij}$$
其中:
$l$ —— 为学习率,逐渐减少,比较优化
4) 偏向更新:
$$\Delta\Theta_{j}=(l)Err_{j}$$
$$\Theta_{j}=\Theta_{j}+\Delta\Theta_{j}$$
其中:
$i$ —— 对应前面的单元,$j$ 对应后面的单元
6.4.3 终止条件
7. 实例介绍
8. 代码实现
# Import `Sequential` from `keras.models` from keras.models import Sequential # Import `Dense` from `keras.layers` from keras.layers import Dense # Initialize the model model = Sequential() # Add input layer # 输入层的 units 为 12 # 隐藏层的 units 为 64 # 激活函数为 relu model.add(Dense(64, input_dim=12, activation='relu')) # Add output layer # 输出层的 units 为 1 model.add(Dense(1))
ref: Keras Tutorial: Deep Learning in Python
ref: Getting started with the Keras Sequential model
ref: Keras HelloWorld
对于上面举例的 NN,能够经过下面代码构建结构
model.add(Dense(2, input_dim=3, activation='sigmoid')) model.add(Dense(1, activation='sigmoid'))
model.fit(x_train, y_train, batch_size=100, nb_epoch=20)