DL都是从感知机开始

1.1

Background:感知机perceptron, 美国学者Frank Rosenblatt 1957年提出来的,为啥现在还要提它?

因为,perceptron是NN和DL算法的起源。

相关定义:>=2个的输入,1个输出,其实和逻辑电路很多相似的地方。

上图就是接受2个输入的例子,x_1x_2是输入信号,y是输出信号,\omega_1\omega_2是权重,⚪是神经元或者节点,输入信号被送往神经元时,会被分别乘以固定的权重(\omega_1x_1\omega_2x_2)。例如,神经元计算传过来的信号总和,超过某个届限值时(往往被称为阈值),可以输出1,也就是“神经元被激活”

 y=

\begin{cases} 0 & (\omega_1x_1+\omega_2x_2 \leq \theta ) \\ 1 & (\omega_1x_1+\omega_2x_2 > \theta ) \end{cases}

感知机的多个input 有各自的权重,控制各个信号的重要性,权重越大,重要新越高。

逻辑电路中权重类似于电阻,电阻越小,电流就越大。感知机整好相反,但在激活过程来看是类似的。

1.2 AND门电路的Py实现

#multiple input, single output
def AND(x1,x2):
    w1,w2,theta=0.5,0.5,0.7
    tmp=x1*w1+x2*w2
    if tmp<=theta:
        return 0
    elif tmp>theta:
        return 1

print(AND(0,1))
print(AND(1,1))
print(AND(1,0))
print(AND(0,0))

其他门电路实现就很简单了...

考虑到后面的操作方便,把阈值重新整理下,把\theta改为-bb称为偏置。

  y=\begin{cases} 0 & (b+\omega_1x_1+\omega_2x_2 \leq 0 ) \\ 1 & (b+\omega_1x_1+\omega_2x_2 > 0 ) \end{cases}

使用NumPy实现AND门:

import numpy as np
def AND(x1,x2):
    x=np.array([x1,x2])   #input
    w=np.array([0.5,0.5]) #set weight
    b=-0.7                #set offset
    tmp=np.sum(w*x)+b
    if tmp<=0:
        print(0)
        return 0
    else:
        print(1)
        return 1

AND(0,1)

有些论文会把b, \omega_1, \omega_2这些参数都叫做权重。现在,实现非门和或门 :

import numpy as np
def NAND(x1,x2):
    x=np.array([x1,x2])   #input
    w=np.array([-0.5,-0.5]) #set weight
    b=0.7                #set offset
    tmp=np.sum(w*x)+b
    if tmp<=0:
        print(0)
        return 0
    else:
        print(1)
        return 1
def OR(x1,x2):
    x=np.array([x1,x2])   #input
    w=np.array([0.5,0.5]) #set weight
    b=-0.2                #set offset
    tmp=np.sum(w*x)+b
    if tmp<=0:
        print(0)
        return 0
    else:
        print(1)
        return 1

NAND(0,1)
OR(0,0)

XOR门如何实现呢,感知机的局限性来了,但是为什么无法实现?

。。。

。。。

。。。

感知机的局限性在于它只能表示由一条直线分割的空间,XOR的解空间是非线性空间,所以没办法玩。那么如何用感知机的基本逻辑门实现XOR?多层感知机诞生了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值