感知机
感知机是1957年提出的概念,一直被视为最简单的人工神经网络,也作为二元线性被广泛使用。
我们可以将感知机理解成最简单的神经网络,一般解决线性的分类问题。
上图就是一个简单的感知机,输入端是x序列,通过权重转换,然后经过激活函数f,最后得到预测分类,如公式1中描述的。
y=f(i=1∑nwixi−θ)(1)
import numpy as np
n = 0
lr = 0.05
X = np.array([
[1, 1, 2, 3],
[1, 1, 4, 5],
[1, 1, 1, 1],
[1, 1, 5, 3],
[1, 1, 0, 1]])
Y = np.array([1, 1, -1, 1, -1])
W = (np.random.random(X.shape[1]) - 0.5) * 2
def get_update():
global X, Y, W, lr, n
n += 1
output = np.sign(np.dot(X, W.T))
new_W = W + lr * ((Y - output).dot(X)) / int(X.shape[0])
W = new_W
def main():
for _ in range(100):
get_update()
new_output = np.sign(np.dot(X, W.T))
if (new_output == Y.T).all():
print(n)
break
if __name__ == '__main__':
main()
上文是感知机的一个简单的代码实现,其中X是输入数据,Y是标签数据,get_update()是更新函数,W是权重序列。这里的f采用是示例函数,也就是第15行的代码。
感知机的结果特点十分简单,并且计算速度极快,也是神经网络的一个雏形,希望大家能够通过短短的文章了解这个小算法。