课程主要内容
背景介绍
- 深度学习应用
基础知识
- 线性分类器
神经网络非线性能力及原理
- 感知器与逻辑门
- 强大的空间非线性切分能力
- 网络表达力与过拟合问题
- BP算法与SGD
深度学习应用
图像上的应用
智能实物
自动驾驶
NLP中的应用
综合应用
基础知识
线性分类器
得分函数
损失函数
- 给定W,可以由像素映射到类目得分
- 可以调整参数/权重W,使得映射的结果和实际类别吻合
- 损失函数是用来衡量吻合度的
- 别的称呼(代价函数/cost function) or(客观度/objective)
hinge loss/支持向量机损失
对
于
训
练
集
中
的
第
i
张
图
片
数
据
x
i
对于训练集中的第i张图片数据x_i
对于训练集中的第i张图片数据xi
- 在 W 下 会 有 一 个 得 分 结 果 向 量 f ( x i , W ) 在W下会有一个得分结果向量f(x_i,W) 在W下会有一个得分结果向量f(xi,W)
- 第 j 类 的 得 分 为 我 们 记 作 f ( x i , W ) j 第j类的得分为我们记作f(x_i,W)_j 第j类的得分为我们记作f(xi,W)j
-
则
在
该
样
本
上
的
损
失
我
们
由
下
列
公
式
计
算
得
到
则在该样本上的损失我们由下列公式计算得到
则在该样本上的损失我们由下列公式计算得到
L i = ∑ j ≠ y i m a x ( 0 , f ( x i , W ) j − f ( x i , W ) y i + Δ ) L_i=\sum_{j\neq y_i}max(0,f(x_i,W)_j-f(x_i,W)_{y_i}+\Delta) Li=j=yi∑max(0,f(xi,W)j−f(xi,W)yi+Δ)
由于是线性模型因此可以简化为 L i = ∑ j ≠ y i m a x ( 0 , w j T x i − w y i T x i + Δ ) L_i=\sum_{j\neq y_i} max(0,w_j^Tx_i-w_{y_i}^Tx_i+\Delta) Li=j=yi∑max(0,wjTxi−wyiTxi+Δ)
加正则化项
交叉熵损失(softmax分类器) - 对 于 训 练 集 中 的 第 i 张 图 片 数 据 x i 对于训练集中的第i张图片数据x_i 对于训练集中的第i张图片数据xi
- 在 W 下 会 有 一 个 得 分 结 果 向 量 f y i 在W下会有一个得分结果向量f_{y_i} 在W下会有一个得分结果向量fyi
- 则损失函数记作
L
i
=
−
l
o
g
(
e
f
y
i
∑
j
e
f
j
)
L_i=-log( \frac{e^{f_{y_i}}}{\sum_je^{f_j}})
Li=−log(∑jefjefyi)或者
L
i
=
−
f
y
i
+
l
o
g
(
∑
j
e
f
j
)
L_i=-f_{y_i}+log(\sum_je^{f_j})
Li=−fyi+log(j∑efj)
实际工程中一般采用下面的计算方式:
e f y i ∑ j e f j = C e f y i C ∑ j e f j = e f y i + l o g C ∑ j e f j + l o g C \frac {e^{f_{y_i}}}{\sum_j e^{f_j}}=\ \frac {Ce^{f_{y_i}}}{C\sum _j e^{f_j}}=\frac {e^{f_{y_i}}+log C}{\sum_j e^{f_j+logC}} ∑jefjefyi= C∑jefjCefyi=∑jefj+logCefyi+logC
Softmax是将神经网络得到的多个值,进行归一化处理,使得到的值在[0,1]之间,让结果变得可解释。即可以将结果看作是概率,某个类别概率越大,将样本归为该类别的可能性也就越高。
深度学习
神经网络
一般结构
神经网络一般由输入层,隐藏层和输出层构成。
浅层神经网络与深层神经网络
浅层
添加少量隐层 => 浅层神经网络
深层(DNN)
增多中间层 => 深度神经网络(DNN)
通过神经元实现逻辑关系
神经元完成『逻辑与』
x 1 x_1 x1 | x 2 x_2 x2 | h Θ ( x ) h_\Theta(x) hΘ(x) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
神经元完成『逻辑或』
x 1 x_1 x1 | x 2 x_2 x2 | h Θ ( x ) h_\Theta(x) hΘ(x) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
神经网络的表达力与过拟合
- 理论上说单隐层神经网络可以逼近任何连续函数(只要隐层
的神经元个数足够多)。 - 虽然从数学上看表达能力一致,但是多隐藏层的神经网络比 单隐藏层的神经网络工程效果好很多。
- 对于一些分类数据(比如CTR预估里),3层神经网络效果优
于2层神经网络,但是如果把层数再不断增加(4,5,6层),对
最后结果的帮助就没有那么大的跳变了。 - 图像数据比较特殊,是一种深层(多层次)的结构化数据,深
层次的卷积神经网络,能够更充分和准确地把这些层级信息
表达出来。 - 提升隐层层数或者隐层神经元个数,神经网络“容量”会变
大,空间表达力会变强。 - 过多的隐层和神经元节点,会带来过拟合问题。
- 不要试图通过降低神经网络参数量来减缓过拟合,用正则化
或者dropout。
激活函数(传递函数)
Sigmoid函数
f
(
x
)
=
1
1
+
e
−
x
f(x)=\frac{1}{1+e^{-x}}
f(x)=1+e−x1
函数图像
双S函数
f
(
x
)
=
1
−
e
−
x
1
+
e
−
x
f(x)=\frac{1-e^{-x}}{1+e^{-x}}
f(x)=1+e−x1−e−x
函数图像
BP算法(δ算法)
以三层为例
输出层
E
=
1
2
(
d
−
o
)
2
=
1
2
∑
k
=
1
l
(
d
k
−
o
k
)
2
E=\frac12(d-o)^2=\frac12\sum^l_{k=1}(d_k-o_k)^2
E=21(d−o)2=21k=1∑l(dk−ok)2
误差展开⾄隐层
E
=
1
2
∑
k
=
1
l
[
d
k
−
f
(
n
e
t
k
)
]
2
=
1
2
∑
k
=
1
l
[
d
k
−
f
(
∑
j
=
0
m
w
j
k
y
j
)
]
2
E=\frac12\sum^l_{k=1}[d_k-f(net_k)]^2=\frac12\sum^l_{k=1}[d_k-f(\sum^m_{j=0}w_{jk}y_j)]^2
E=21k=1∑l[dk−f(netk)]2=21k=1∑l[dk−f(j=0∑mwjkyj)]2
展开至输入层
E
=
1
2
∑
k
=
1
l
d
k
−
f
[
∑
j
=
0
m
w
j
k
f
(
n
e
t
j
)
]
2
E=\frac12\sum^l_{k=1}d_k-f[\sum^m_{j=0}w_{jk}f(net_j)]^2
E=21k=1∑ldk−f[j=0∑mwjkf(netj)]2
SGD算法(随机梯度下降法)
我的收获
老师讲解的思路很清晰,讲得很通俗易懂,基本上是面对新手。
我有一点基础,感觉对以看书习得的知识有了全新的理解。
对于深度学习的应用有了更深刻的认知,初步学习了SGD算法
和BP算法,了解了几种常见的激活函数,了解了神经网络的构
造,损失函数的建立及其优化方法。
需要进一步补充的知识
SGD算法在不断演变,需要学习更新的算法如Adam。
还有另外几种激活函数如单位跃迁函数。
机器学习中其他算法,其他种类的神经网络。