深度学习 VS 机器学习
机器学习模型针对抽象
深度学习端对端的
机器学习:利用计算机、概率论、统计学等知识,让计算机学会知识。机器学习的过程,就是训练数据去优化目标函数。
深度学习: 是一种特殊的机器学习,具有强大的能力和灵活性,它通过学习将世界表示为嵌套的概念层次结构,每个概念都与更简单的概念相关,而抽象的概念则用于计算更抽象的表示
传统的机器学习需要定义手工特征,有目的的提取目标信息,依赖任务的同异性以及设计特征的专家经验。
深度学习可以从大数据里先学到简单的特征,逐渐学习更为复杂的深层特征,不依赖人工的特征工程。
多层的特征神经元模型称为感知机(perceptron), 由Frank Rosenblatt 于1958年发明。
神经网络发展是依据生物神经元
转换为人工神经元模型
由上面输入设为a, 权值设为w, 求和设为sum,非线性函数为sign,输出为Z。
公 式 : z = f ( w 1 ∗ a 1 + w 2 ∗ a 2 + w 3 ∗ a 3 ) 公式: \ \ \ \ z = f(w_1 * a_1 + w_2 * a_2 + w_3 * a_3) 公式: z=f(w1∗a1+w2∗a2+w3∗a3)
简化:
层的概念
g 为激活函数
上面的实线表示:
o
u
t
p
u
t
1
=
g
(
a
1
∗
w
1
+
a
2
∗
w
2
+
a
3
∗
w
3
)
output1 = g(a_1 * w_1 + a_2 * w_2 + a_3 * w_3)
output1=g(a1∗w1+a2∗w2+a3∗w3)
虚线表示:
o
u
t
p
u
t
2
=
g
(
a
4
∗
w
4
+
a
5
∗
w
5
+
a
6
∗
w
6
)
output2 = g(a_4 * w_4 + a_5 * w_5 + a_6 * w_6)
output2=g(a4∗w4+a5∗w5+a6∗w6)
感知机学习的对偶形式(主要解决异或问题)
对于输入空间,感知机通过以下函数将其映射到(+1, -1)的输出空间
f
(
x
)
=
s
i
g
n
(
w
x
+
b
)
f(x) = sign(wx+b)
f(x)=sign(wx+b)
对 于 所 有 的 轴 分 类 点 i ∈ m i 都 有 − y i ( w ∗ x i + b ) > 0 对于所有的轴分类点 i\in m_i 都有 -y_i(w*x_i + b) > 0 对于所有的轴分类点i∈mi都有−yi(w∗xi+b)>0
因此我们可以定义如下的损失函数作为优化准则
L
(
w
,
b
)
=
−
∑
i
∈
m
i
y
i
(
w
∗
x
i
+
b
)
L(w,b) = -\sum_{i\in m_i}y_i(w*x_i + b)
L(w,b)=−i∈mi∑yi(w∗xi+b)
然后我们可以得到梯度w、b
▽
w
L
(
w
,
b
)
=
−
∑
x
i
∈
m
y
i
x
i
▽
b
L
(
w
,
b
)
=
−
∑
x
i
∈
m
y
i
\triangledown_w L(w,b) = -\sum_{x_i \in m}y_ix_i \\ \triangledown_b L(w,b) = -\sum_{x_i \in m}y_i
▽wL(w,b)=−xi∈m∑yixi▽bL(w,b)=−xi∈m∑yi
来进行更新:
w
←
w
+
η
y
i
x
i
b
←
b
+
η
y
i
w \leftarrow w + \eta y_ix_i \\ b \leftarrow b + \eta y_i
w←w+ηyixib←b+ηyi
感知机梯度的更新是由错判样本的出现次数 N 决定的
代入N 可得到
w
=
∑
i
=
1
N
n
i
η
y
i
x
i
b
=
∑
i
=
1
N
n
i
η
y
i
f
(
z
)
=
s
i
g
n
(
w
∗
x
+
b
)
=
s
i
g
n
(
∑
i
=
1
N
n
i
η
y
i
x
i
∗
x
+
∑
i
=
1
N
n
i
η
y
i
)
w = \sum^{N}_{i=1}n_i\eta y_i x_i \\ b = \sum^{N}_{i=1}n_i\eta y_i \\ f(z) = sign(w * x + b) = sign(\sum^{N}_{i=1}n_i\eta y_i x_i * x + \sum^{N}_{i=1}n_i\eta y_i)
w=i=1∑Nniηyixib=i=1∑Nniηyif(z)=sign(w∗x+b)=sign(i=1∑Nniηyixi∗x+i=1∑Nniηyi)
训练过程:
-
初 始 化 时 ∀ n i = 0 初始化时\ \ \ \forall n_i = 0 初始化时 ∀ni=0
-
在 训 练 集 中 选 取 数 据 ( x i , y i ) 在训练集中选取数据(x_i, y_i) 在训练集中选取数据(xi,yi)
-
如 果 y i ( ∑ i = 1 N n i η y i x i ∗ x + ∑ i = 1 N n i η y i ) ≤ 0 , 更 新 : n i ← n i + 1 如果y_i(\sum^{N}_{i=1}n_i\eta y_i x_i * x + \sum^{N}_{i=1}n_i\eta y_i) \leq 0 , 更新: n_i \leftarrow n_i + 1 如果yi(i=1∑Nniηyixi∗x+i=1∑Nniηyi)≤0,更新:ni←ni+1
-
转至 2 直至没有误分类数据。
代码解释异或问题
import numpy as np
import matplotlib.pyplot as plt
x = np.array([[3,3], [4, 3], [1, 1]])
y = np.array([1, 1, -1])
plt.figure()
# 画红点和蓝点
for i in range(len(x)):
if y[i] == 1:
plt.plot(x[i][0], x[i][1], 'ro')
else:
plt.plot(x[i][0], x[i][1], 'bo')
w = np.array([1, 0])
b = 0
delta = 1
# n 为 100
for i in range(100):
choice = -1
for j in range(len(x)):
if y[j] != np.sign(np.dot(w, x[0]) + b):
choice = j
break
if choice == -1:
break
# 更新 w, b
#
w = w + delta * y[choice] * x[choice]
b = b + delta * y[choice]
line_x = [0, 10]
line_y = [0, 0]
for i in range(len(line_x)):
line_y[i] = (-w[0] * line_x[i]-b)/ w[1]
plt.plot(line_x, line_y)
plt.show()
最后的画图 line_y[i] 依据斜率
w
0
x
0
+
w
1
x
1
+
b
=
0
−
w
0
x
0
−
b
w
1
w_0x_0 + w_1x_1 + b = 0 \\ \frac{-w_0x_0 - b}{w_1}
w0x0+w1x1+b=0w1−w0x0−b
感知机的对偶的用途: 当样本数量少、样本维度高时,能够节约计算资源
简单的感知机
其中 x1, x2, x3 是感知机的输入,其输出为:
o u t p u t = { 0 , i f ∑ i w i x i ≤ t h r e s h o l d 1 , i f ∑ i w i x i > t h r e s h o l d output = \left\{ \begin{aligned} 0, \quad if \ \ \sum_i w_i x_i \le threshold \\ 1, \quad if \ \ \sum_i w_i x_i > threshold \end{aligned} \right. output=⎩⎪⎪⎨⎪⎪⎧0,if i∑wixi≤threshold1,if i∑wixi>threshold
假如把感知机想象成一个加权投票机制,比如 3 位评委给一个歌手打分,打分分别为 4 分、1 分、-3 分,这 3 位评分的权重分别是 1、3、2,则该歌手最终得分为 4 * 1 + 1 * 3 + (-3) * 2 = 1 。按照比赛规则,选取的 threshold 为 3,说明只有歌手的综合评分大于 3 时,才可顺利晋级。对照感知机,该选手被淘汰,因为
∑
i
w
i
x
i
<
t
h
r
e
s
h
o
l
d
=
3
,
o
u
t
p
u
t
=
0
\sum_i w_i x_i < threshold=3, output = 0
i∑wixi<threshold=3,output=0
用 -b 代替 threshold,输出变为:
o
u
t
p
u
t
=
{
0
,
i
f
w
⋅
x
+
b
≤
t
h
r
e
s
h
o
l
d
1
,
i
f
w
⋅
x
+
b
>
t
h
r
e
s
h
o
l
d
output = \left\{ \begin{aligned} 0, \quad if \ \ w \cdot x + b \le threshold \\ 1, \quad if \ \ w \cdot x + b > threshold \end{aligned} \right.
output={0,if w⋅x+b≤threshold1,if w⋅x+b>threshold
设置合适的 x 和 b ,一个简单的感知机单元的与非门表示如下:
当输入为 0,1 时,感知机输出为 0 * (-2) + 1 * (-2) + 3 = 1。
复杂一些的感知机由简单的感知机单元组合而成.
主要参考:
https://www.zhihu.com/question/26526858
https://github.com/scutan90/DeepLearning-500-questions