📜  非逻辑门感知器算法的实现

📅  最后修改于: 2022-05-13 01:54:22.104000             🧑  作者: Mango

非逻辑门感知器算法的实现


在机器学习领域,感知器是一种用于二元分类器的监督学习算法。感知器模型实现以下函数:

    \[ \begin{array}{c} \hat{y}=\Theta\left(w_{1} x_{1}+w_{2} x_{2}+\ldots+w_{n} x_{n}+b\right) \\ =\Theta(\mathbf{w} \cdot \mathbf{x}+b) \\ \text { where } \Theta(v)=\left\{\begin{array}{cc} 1 & \text { if } v \geqslant 0 \\ 0 & \text { otherwise } \end{array}\right. \end{array} \]

对于权重向量的特定选择$\boldsymbol{w}$和偏置参数$\boldsymbol{b}$ ,模型预测输出$\boldsymbol{\hat{y}}$对于相应的输入向量$\boldsymbol{x}$ .

NOT逻辑函数真值表只有 1 位二进制输入(0 或 1),即输入向量$\boldsymbol{x}$和相应的输出$\boldsymbol{y}$

$\boldsymbol{x}$$\boldsymbol{y}$
01
10

现在对于相应的权重向量$\boldsymbol{w}$输入向量的$\boldsymbol{x}$ ,相关的感知函数可以定义为:

    \[$\boldsymbol{\hat{y}} = \Theta\left(w x+b\right)$\]


对于实现,考虑的权重参数是$\boldsymbol{w} = -1$偏置参数为$\boldsymbol{b} = 0.5$ .

Python实现:

# importing Python library
import numpy as np
  
# define Unit Step Function
def unitStep(v):
    if v >= 0:
        return 1
    else:
        return 0
  
# design Perceptron Model
def perceptronModel(x, w, b):
    v = np.dot(w, x) + b
    y = unitStep(v)
    return y
  
# NOT Logic Function
# w = -1, b = 0.5
def NOT_logicFunction(x):
    w = -1
    b = 0.5
    return perceptronModel(x, w, b)
  
# testing the Perceptron Model
test1 = np.array(1)
test2 = np.array(0)
  
print("NOT({}) = {}".format(1, NOT_logicFunction(test1)))
print("NOT({}) = {}".format(0, NOT_logicFunction(test2)))
输出:
NOT(1) = 0
NOT(0) = 1

这里,模型预测输出( $\boldsymbol{\hat{y}}$ )对于每个测试输入都与非逻辑门常规输出完全匹配( $\boldsymbol{y}$ ) 根据真值表。
因此,验证了非逻辑门的感知器算法被正确实现。