神经网络之感知机

感知机

感知机是1957年提出的概念,一直被视为最简单的人工神经网络,也作为二元线性被广泛使用。

我们可以将感知机理解成最简单的神经网络,一般解决线性的分类问题。

perceptron.jpg

上图就是一个简单的感知机,输入端是x序列,通过权重转换,然后经过激活函数f,最后得到预测分类,如公式1中描述的。

y=f(i=1nwixiθ)(1)y=f(\sum_{i=1}^{n}w_ix_i-\theta) \tag{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()

上文是感知机的一个简单的代码实现,其中XX是输入数据,YY是标签数据,get_update()是更新函数,WW是权重序列。这里的ff采用是示例函数,也就是第15行的代码。
感知机的结果特点十分简单,并且计算速度极快,也是神经网络的一个雏形,希望大家能够通过短短的文章了解这个小算法。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×