简要概述神经网络感知机

深度学习 VS 机器学习

机器学习模型针对抽象

深度学习端对端的

机器学习:利用计算机、概率论、统计学等知识,让计算机学会知识。机器学习的过程,就是训练数据去优化目标函数。

深度学习: 是一种特殊的机器学习,具有强大的能力和灵活性,它通过学习将世界表示为嵌套的概念层次结构,每个概念都与更简单的概念相关,而抽象的概念则用于计算更抽象的表示

传统的机器学习需要定义手工特征,有目的的提取目标信息,依赖任务的同异性以及设计特征的专家经验。

深度学习可以从大数据里先学到简单的特征,逐渐学习更为复杂的深层特征,不依赖人工的特征工程。

多层的特征神经元模型称为感知机(perceptron), 由Frank Rosenblatt 于1958年发明。
神经网络发展是依据生物神经元
生物神经元
转换为人工神经元模型

权值1
权值2
权值3
输入1
求和
输入2
输入3
非线性函数
输出

由上面输入设为a, 权值设为w, 求和设为sum,非线性函数为sign,输出为Z。

w1
w2
w3
a1
sum
a2
a3
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(w1a1+w2a2+w3a3)

简化:

w1
w2
w3
a1
sum sign
a2
a3
z
w1
w2
w3
a1
f
a2
a3
z1
z2

层的概念

w1
w2
w3
a1
z
a2
a3
w1
w2
w3
w4
w5
w6
a1
z1
a2
a3
output1
z2
output2

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(a1w1+a2w2+a3w3)
虚线表示:
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(a4w4+a5w5+a6w6)

感知机学习的对偶形式(主要解决异或问题)

对于输入空间,感知机通过以下函数将其映射到(+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 imiyi(wxi+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)=imiyi(wxi+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)=ximyixibL(w,b)=ximyi
来进行更新:
w ← w + η y i x i b ← b + η y i w \leftarrow w + \eta y_ix_i \\ b \leftarrow b + \eta y_i ww+ηyixibb+η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=1Nniηyixib=i=1Nniηyif(z)=sign(wx+b)=sign(i=1Nniηyixix+i=1Nniηyi)
训练过程:

  1. 初 始 化 时     ∀ n i = 0 初始化时\ \ \ \forall n_i = 0    ni=0

  2. 在 训 练 集 中 选 取 数 据 ( x i , y i ) 在训练集中选取数据(x_i, y_i) xi,yi)

  3. 如 果 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=1Nniηyixix+i=1Nniηyi)0,nini+1

  4. 转至 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=0w1w0x0b

输出图

感知机的对偶的用途: 当样本数量少、样本维度高时,能够节约计算资源

简单的感知机

其中 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  iwixithreshold1,if  iwixi>threshold

假如把感知机想象成一个加权投票机制,比如 3 位评委给一个歌手打分,打分分别为 4 分、1 分、-3 分,这 3 位评分的权重分别是 1、3、2,则该歌手最终得分为 4 * 1 + 1 * 3 + (-3) * 2 = 1 。按照比赛规则,选取的 threshold 为 3,说明只有歌手的综合评分大于 3 时,才可顺利晋级。对照感知机,该选手被淘汰,因为
∑ i w i x i &lt; t h r e s h o l d = 3 , o u t p u t = 0 \sum_i w_i x_i &lt; threshold=3, output = 0 iwixi<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 &gt; 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 &gt; threshold \end{aligned} \right. output={0,if  wx+bthreshold1,if  wx+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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值