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


簡介

人工智慧領域透過不同的演算法和模型在人類智慧方面取得了顯著進步。其中,感知器演算法是神經網路的重要組成部分,模擬人腦中單個神經元的行為。在本文中,我們將深入探討感知器演算法的細節,並說明它在使用 2 位二進位制輸入解決或邏輯閘問題中的應用。透過理解這個簡單而強大的演算法,可以為探索當今人工智慧領域中使用的更復雜的神經網路做好準備。

該演算法特別適合於線性可分的資料集,其中兩個類別可以透過一條直線明確地分離。該演算法首先將權重和偏差初始化為小的任意值。這些權重乘以輸入特徵,並加上偏差來計算輸出。啟用函式(通常是階躍函式)決定輸出神經元是否啟用。

在訓練期間,感知器基於預測誤差迭代地更新其權重和偏差,使用學習率作為更新的縮放因子。該過程持續進行,直到演算法收斂,即權重和偏差已調整到可以準確地對映輸入-輸出對。

儘管簡單,但感知器演算法為更現代的神經網路結構鋪平了道路,為尖端深度學習技術奠定了基礎。

感知器演算法是一種監督學習演算法,用於二元分類問題。它基於稱為感知器的簡化人工神經元的概念。感知器接收多個輸入,每個輸入乘以其各自的權重,並根據輸入的加權總和是否超過某個閾值來生成二元輸出。

理解或邏輯閘

具有 2 位二進位制輸入的或門的真值表如下所示

輸入 A

輸入 B

輸出

0

0

0

0

1

1

1

0

1

1

1

1

或邏輯閘的實現

要應用感知器演算法,我們需要一個表示或邏輯閘行為的資料集。對於或門,輸入組合及其相應的輸出如下所示

演算法步驟

步驟 1:初始化權重和偏差 首先,權重和偏差可以設定為隨機值或初始化為零。

步驟 2:計算加權和 對於每個輸入資料點,使用以下公式計算輸入的加權和。

步驟 3:應用啟用函式 使用計算出的加權和,應用啟用函式來確定感知器的輸出。

步驟 4:更新權重和偏差 將預測輸出與資料集中的實際輸出進行比較,並調整權重和偏差以減少誤差。

步驟 5:重複上述步驟多次迭代,直到演算法收斂到一個解決方案。

示例

import numpy as np


def step_function(x):
    return 1 if x >= 0 else 0


class PerceptronOR:
    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


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


or_gate = PerceptronOR(input_size=2)
or_gate.train(inputs, target_output)


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

輸出

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

結論

感知器演算法是機器學習和神經網路中的一個基本概念。在本文中,我們研究了感知器演算法的基礎知識及其在使用 2 位二進位制輸入解決或邏輯閘問題中的應用。透過訓練一個基本的感知器,我們能夠對或門的行為做出準確的預測。儘管感知器演算法有其侷限性,例如它無法處理非線性可分資料,但它為更現代的神經網路設計(如多層感知器 (MLP) 和深度學習模型)鋪平了道路。隨著人工智慧的不斷發展,理解感知器演算法及其變體對於掌握人工神經網路的基本原理至關重要。

更新於: 2023 年 7 月 28 日

824 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告