使用2位二進位制輸入的異或邏輯閘感知器演算法
在人工智慧領域,神經網路已成為解決複雜問題的強大工具。感知器是其基本組成部分之一,它是一種簡單的演算法,構成更復雜神經網路架構的基礎。在本文中,我們將深入探討如何使用感知器演算法以及2位二進位制輸入有效實現異或邏輯閘的神秘之處。
異或邏輯閘的感知器演算法
在我們深入探討之前,讓我們先熟悉計算機科學中的一個經典挑戰——理解和複製異或邏輯閘。異或(Exclusive OR)邏輯函式,當且僅當輸入值只有一個為真 (1) 時返回真,否則返回假 (0)。雖然處理線性可分資料時看似簡單,但由於非線性決策邊界,像單層感知器這樣的傳統二元分類器難以準確地處理像異或這樣的問題。
感知器演算法登場
由Frank Rosenblatt在1958年設計,感知器演算法徹底改變了早期人工智慧研究。它模仿人類大腦中的生物神經元,同時利用數學原理根據輸入模式做出準確的預測或決策。
分步實現異或邏輯閘
要使用兩層感知器架構實現異或邏輯,我們需要遵循以下步驟
步驟1:定義所有可能組合的二進位制輸入值(0和1)。對於異或門,四個輸入為 (0, 0), (0, 1), (1, 0), 和 (1, 1)。
步驟2:分配初始隨機權重和偏差值——作為訓練感知器演算法的起點,分配-1到+1之間的隨機權重是慣例。
步驟3:透過相應調整權重來訓練感知器——我們使用隨機梯度下降法迭代輸入。透過計算加權和並應用啟用函式(通常使用基於閾值的階躍函式或S型曲線)來計算預測輸出,可以將預測結果與真值表進行比較以評估預測精度。
步驟4:評估訓練結果——在根據預測與預期輸出調整權重並對訓練資料進行多次迭代取樣之後,透過將最終預測結果與實際異或邏輯表進行比較來檢查模型效能。
演算法的工作原理
感知器的核心由三個組成部分:輸入權重 (w1 和 w2)、偏差值 (b) 和啟用函式。
輸入權重——這些表示神經元之間的突觸連線,並在資訊處理過程中決定它們的重要性。
偏差值——偏差的引入使得能夠針對輸入可能不平衡或包含系統誤差的情況進行調整。
啟用函式——根據對輸入和偏差應用的加權和計算結果,確定神經元是否激發或保持休眠狀態。
Python 程式碼——使用2位二進位制輸入的異或邏輯閘的感知器演算法
透過實現異或邏輯閘,使用 Python 程式碼給出感知器演算法。
演算法
步驟1:匯入 numpy 模組並定義一個引數為“x”的函式。
步驟2:初始化 x1 和 x2 的權重並設定偏差值。
步驟3:計算計算權重的加權和。
步驟4:將階躍函式應用於值的加權和。
步驟5:宣告異或門的輸入,然後計算每個輸入的預測輸出。
示例
#importing the numpy module import numpy as np #defining the stepfun with one argument as “x” def stepfun(a): return 1 if a >= 0 else 0 #main class is defined class MainAlgorithm: def __init__(self): self.weights = np.array([7,-3]) # Initializing Weights of two variables self.bias = -0.3 # Bias Value def predict(self,input_X): weighted_sum = np.dot(input_X,self.weights) + self.bias # Calculating Weighted Sum output = stepfun(weighted_sum) # Applying Step Function return output perceptron = MainAlgorithm() # The given input and Target Outputs for XOR Logic Gate inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) target_outputs_xor = np.array([0, 1, 1, 0]) #Defining the zip function with two arguments for input1, desired_output in zip(inputs,target_outputs_xor): predicted_output = perceptron.predict(input1) #Finally printing the output in the form of input, predicted, and desired output. print(f"Input: {input1} \nPredicted Output: {predicted_output} \nDesired Output: {desired_output}")
輸出
Input: [0 0]. Predicted Output: 0 Desired Output: 0 Input: [0 1]. Predicted Output: 0 Desired Output: 1 Input: [1 0]. Predicted Output: 1 Desired Output: 1 Input: [1 1]. Predicted Output: 1 Desired Output: 0
結論
理解異或門在這些框架中的工作方式,為增強系統決策能力提供了寶貴的見解。使用感知器演算法來揭示具有2位二進位制輸入的異或邏輯閘的內部工作原理,帶我們踏上了一段激動人心的神經網路之旅。透過利用Rosenblatt半個多世紀前開創性的工作,如今的研究人員繼續在此基礎上構建更先進的機器學習演算法,以解決複雜問題。