Chapter2_感知机

感知机

感知机接收多个输入信号,输出一个信号。感知机的信号只有“1/0”两种取值。
神经元计算传送过来的信号的总和,当总和超过 阈值时,“神经元被激活”。阈值用\theta表示
y=\begin{cases} 0,& \text { $(\omega_1x_1+\omega_2x_2\leq \theta)$ }\\ 1,& \text { $(\omega_1x_1+\omega_2x_2>\theta)$} \end{cases}

感知机的实现

#实现一个AND门
def AND(x1,x2):
    w1,w2,theta = 0.5,0.5,0.7
    tmp = w1*x1+w2*x2
    if tmp<=theta:
        return 0
    elif tmp>theta:
        return 1

导入权重和偏置

y=\begin{cases} 0,& \text{$b+\omega_1x_1+\omega_2x_2 \leq 0$}\\ 1,& \text{$b+\omega_1x_1+\omega_2x_2>0$} \end{cases}
b=-\theta称为偏置,\omega_1\omega_2称为权重

import numpy as np
x = np.array([0,1]) #输入
w = np.array([0.5,0.5]) #权重
b = -0.7 #偏置
w*x
np.sum(w*x)
np.sum(w*x)+b

使用权重和偏置的实现

def AND(x1,x2):
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.7
    tmp = np.sum(2*x)+b
    if tmp<=0:
        return 0
    else:
        return 

注:\omega_1,\omega_2是控制输入信号重要性的参数,偏置b为调整神经元被激活的容易程度(输出信号为1的程度)的参数

感知机的局限性

  • 单层感知机无法分离非线性空间
#异或门的实现
def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y = AND(s1,s2)
    return y

多层感知机

  • 叠加了多层的感知机
  • 可以表示非线性空间
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容