书的pdf和源码需要的可以留言
该书的前两章主要是简介和python的安装和使用,这里我就从第二章开始写下自己的读书笔记。
第二章感知机
1 概念
多个输入,一个输出
输入叫做输入信号
输出叫做输出信号,输出信号只有两种状态,就是被激活(传递信号),不被激活(不传递信号)
每个输入都要它自己的权重,输入信号乘以自己的权重相加就是输出信号,如果输出信号到达了某个界定值(称为阈值,常用θ表示)
式子如下
2 逻辑门
这几类门在基础过程都学过,简单的回顾
与门(两个输入相同是为1,不同时为0)
或门(输入信号中只要有一个信号为1,结果都为1,两个输入信号都为0时结果才是0)
与非门(就是在与门的结果取非,就是1变0,0变1)
后面是python实现一下与门,很简单的,就是传递两个参数,然后乘以对应的权重,如果大于阈值返回为一,如果小于阈值返回为0。
def AND(x1,x2):
w1,w2,theta = 0.5, 0.5, 0.7
temp=x1*w1+x2*w2
if temp<=theta:
print(0)
return 0
elif temp>theta:
print(1)
return 1
AND(0,0)
AND(1,1)
AND(1,0)
对于刚刚的阈值来讲,我们把它移到等式的右边和输入信号一边,我们把他将叫做偏置。式字变成这样子。
python代码
import numpy as np
def AND(x1,x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.7
temp = np.sum(w*x)+b
if temp<=0:
print(0)
return 0
elif temp>0:
print(1)
return 1
权重和偏置的意义是不一样的
权重是控制输入信号重要性的参数,偏置是调整神经元被激活的容易度。
现在用python来实现与非门和或门
与非门
def NAND(x1,x2):
x = np.array([x1,x2])
w = np.array([-0.5,-0.5])
b = 0.7
temp = np.sum(w*x)+b
if temp<=0:
print(0)
return 0
elif temp>0:
print(1)
return 1
或门
def OR(x1,x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.2
temp = np.sum(w*x)+b
if temp<=0:
print(0)
return 0
elif temp>0:
print(1)
return 1
异或门
两个输入取值有且仅有一个输入为的时候取值为1,其他时候情况取值为0。异或门不能线性分割结果。异或门用与非门和或门相与。就可以得到异或门。
python实现代码
def XOR(x1,x2):
s1 = NAND(x1,x2)
s2 = OR(x1,x2)
y=AND(s1,s2)
return y
多层感知机
像与门或门这样的就是单层的感知机,像与或门这样子叠加了多层的叫做多层感知机。
感知机是基础很重要。下一章神经网络。加油。