Intro to Deep learning
课程网站
1.The perceptron
1.1 感知器是最小的神经单元
1.2 感知器的基本结构
感知器基本结构如下,首先输入一组数据
x
1
,
x
2
,
x
m
x_1,x_2,x_m
x1,x2,xm(神经元输入)分别乘上相应的权重
w
1
,
w
2
,
w
m
w_1,w_2,w_m
w1,w2,wm,将结果求和(可以看作是一个线性组合)再加上一个bias(偏移量);将结果使用一个非线性激活函数(常见的有relu,sigmoid,tanh),便得到神经元的输出
1.3 感知器的向量形式
同样的可以写为向量形式,更为简洁
1.4 感知器中的激活函数
正如上面所说,常见的激活函数有sigmoid ,tanh,relu
三者在深度学习框架中均有提供,本课程使用的是tensorflow,所以之后的代码,笔记都以tf为多
- 对于sigmoid激活函数:是所有的输入的值都被限定在0与1之间,使其非常合适概率问题
- 对于relu激活函数:分段函数,求导容易
引入非线性函数的目的是,将非线性引入模型,使得模型能够处理非线性的数据,这是非常重要的,因为世界数据基本是非线性的,这也是神经网络如此强大的原因
小插叙
在课程,讲师提出了一个很有用的trick
不管我课上说什么,你需要问问自己为什么这个是必要的步骤,为什么需要这些每一步骤? 他认为是 These are the questions that can lead to really amazing research breakthroughs
1.5 多输出感知器
类似的 通过不同的权重组合,得到更多的输出个数
其中所有的输出都连接到输入 该层为全连接层也称为dense layer
1.6 单层神经网络
单层神经网络由 输入层 隐藏层 输出层 组成,其中隐藏层的个数对应?层神经网络
1.7深度神经网络
类似单层神经网络,通过增加hidden layers的层数,这时候称为deep neural network
-
loss :measures the cost incurred from incorrect predictions
-
empirical loss :the total loss over our entire dataset(mean error)
-
binary class(possibility,classification) :cross_entropy_loss
用于分类,概率值 -
real number(regression):Mean Squares Error Loss
回归问题,预测实数
我们的目的是希望loss最低
该部分称为Loss Optimization
通过更新权重,得到loss最小
对于两个权重的模型,我们可以画出其loss图像,通过选择一个初始的位置,使用梯度下降,对参数
w
1
,
w
2
w_1,w_2
w1,w2进行更新,使得模型收敛在local minium,其中
η
\eta
η为learning_rate
其中计算梯度是非常重要的,这步称为Backpropagation
遵守 chain rule链式法则
梯度:导数如何影响损失
其中
η
\eta
η learning_rate 如何设置
- small stuck in somewhere
- large not stable
- try …
- 建立一个自适应的learning rate
tf提供了不同的优化器
Tips
Mini-batch
反向传播需要大量的时间,特别是有整个dataset计算出来的数据,不易被noise影响,但是慢
使用随机梯度下降,使用一个数据点,计算速度快,但是很容易被噪音影响
使用batch gradient descent(Mini-batch) 取前两者优点,更高的速度,在GPU展现更大的并行性能
Overfitting and underfitting
overfitting 太复杂 对于训练数据很棒 但是实际数据不好
underfitting 对于训练数据不好 ,模型太简单
**tips:(防止过拟合)
- Dropout** 随机设置一些神经元的概率为0.5
- 提早结束(early stopping)