2 位二進位制輸入的 NAND 邏輯閘感知器演算法


介紹

在人工智慧和機器學習領域,人工神經網路 (ANN) 是最重要的基本組成部分之一。ANN 的靈感來自人腦的神經系統,旨在模擬神經元處理資料的方式。ANN 的核心是感知器,這是一個基本的神經元數值模型,也是一個重要的構建塊。在本文中,我們將探討具有 2 位二進位制輸入的感知器 NAND 邏輯閘,這是一個在 ANN 世界中既簡單又基礎的概念。

理解感知器

感知器由 Frank Rosenblatt 於 1957 年提出,是一種前饋神經網路。它接收多個輸入訊號,對每個輸入應用權重,將它們加權求和,並將結果透過啟用函式傳遞以產生輸出。

NAND 邏輯閘:在數位電子學中,NAND 門(非與門)是一個重要的邏輯閘,它執行否定和合取的布林運算。當兩個輸入都為假 (0) 時,它返回真 (1) 輸出;對於任何其他輸入位的組合,它返回假 (0) 輸出。2 輸入 NAND 門的真值表如下所示

輸入 A

輸入 B

輸出

0

0

1

0

1

1

1

0

1

1

1

0

NAND 邏輯閘的實現

目標是找到感知器的權重和偏差的正確組合,以便它能夠對所有可能的輸入組合產生正確的輸出。

演算法

步驟 1:用隨機權重和偏差初始化感知器。

步驟 2:將輸入資料提供給感知器並計算輸入的加權和。

步驟 3:將啟用函式應用於加權和以獲得輸出 (0 或 1)。

步驟 4:比較輸出和目標輸出(NAND 真值表)。

步驟 5:根據誤差修改權重和偏差,使感知器更接近正確的輸出。

重複步驟 2-5 多次迭代(週期),直到感知器學會對所有輸入產生正確的輸出。

示例

# import the required module
import numpy as np

#create the activation function
def step_function(x):
    return 1 if x >= 0 else 0

#define class
class PerceptronNAND:
    def __init__(self, input_size):
        self.weights = np.random.rand(input_size)
        self.bias = np.random.rand()
        
    def predict(self, inputs):
        summation = np.dot(inputs, self.weights) + self.bias
        return step_function(summation)
    
    def train(self, inputs, target_output, learning_rate=0.1, epochs=100):
        for epoch in range(epochs):
            total_error = 0
            for input_data, target in zip(inputs, target_output):
                prediction = self.predict(input_data)
                error = target - prediction
                total_error += abs(error)
                self.weights += learning_rate * error * input_data
                self.bias += learning_rate * error
            if total_error == 0:
                break

#Intilaize array
inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])


target_output = np.array([1, 1, 1, 0])


nand_gate = PerceptronNAND(input_size=2)
nand_gate.train(inputs, target_output)


print("Testing Perceptron NAND gate:")
for input_data in inputs:
    output = nand_gate.predict(input_data)
    print(f"Input: {input_data}, Output: {output}")

輸出

Testing Perceptron NAND gate:
Input: [0 0], Output: 1
Input: [0 1], Output: 1
Input: [1 0], Output: 1
Input: [1 1], Output: 0

結論

具有 2 位二進位制輸入的感知器 NAND 邏輯閘是一個基礎概念,它為更復雜的神經系統奠定了基礎。透過理解感知器如何透過訓練學習 NAND 運算,我們可以瞭解更廣泛的人工神經網路領域。它展示了神經網路執行邏輯運算的能力,為從模式識別到自然語言處理的無數應用打開了大門。當我們更深入地研究人工智慧和機器學習的世界時,掌握這些基本概念對於構建更高階和強大的模型至關重要。感知器 NAND 門展示了人工智慧世界中最先進技術背後簡單性和優雅性的基礎。

更新於:2023 年 7 月 28 日

1K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告