[機器學習]感知器(Perceptron)學習心得

更新於 發佈於 閱讀時間約 6 分鐘

感知器是一種基本的神經網路模型,用於二分類問題。它模擬了人腦神經元的工作原理,通過調整權重和偏差值來達到預測和分類的目的。

圖手畫得有點醜,請見諒

raw-image

感知器流程

輸入

  1. 資料的輸入:
    • 輸入層接受資料的輸入,每個輸入對應一個特徵,還有一個固定的偏差神經元。
    • 資料經過每個神經元時,會乘上相應的權重,然後加上偏差值。
  2. 經過輸出神經元做出決策:
    • 輸出層的神經元接收所有輸入層神經元的加權和。
    • 根據加權和,輸出神經元進行決策,通常通過激活函數(如閥值函數、Sigmoid函數等)轉換成輸出值。
    • 根據預測結果和真實結果的差距,使用損失函數計算誤差,並通過優化器進行權重和偏差值的更新。

輸出神經元

  • 激活函數: 常見的激活函數有Sigmoid函數、ReLU函數、Tanh函數等,它們將加權和轉換為一個標準範圍內的輸出值(如0到1或-1到1)。
  • 二分類問題: 感知器主要用於二分類問題,即預測輸出為0或1。
  • 預測結果和真實結果的差距: 通過損失函數衡量預測結果和真實結果之間的差距,這個差距用來指導模型的更新。

損失函數

  • 均方誤差 (Mean Squared Error, MSE): 常用的損失函數,計算預測值和真實值之間的平方差的平均值。
  • 交叉熵損失 (Cross-Entropy Loss): 用於分類問題,特別是多分類問題,計算預測的概率分佈和真實分佈之間的差異。

優化器

  • 梯度下降法 (Gradient Descent): 最常用的優化算法,根據損失函數的梯度來更新權重和偏差值,使損失函數最小化。
    • 學習率 (Learning Rate): 控制每次更新的步伐大小,學習率過大可能導致不穩定,過小則可能收斂過慢。
    • 批量梯度下降 (Batch Gradient Descent): 使用整個訓練集來計算梯度。
    • 隨機梯度下降 (Stochastic Gradient Descent, SGD): 每次使用一個樣本來計算梯度,更新權重。
    • 小批量梯度下降 (Mini-Batch Gradient Descent): 每次使用一小部分樣本來計算梯度,更新權重。

儲存的模型

  • 模型儲存: 訓練完成後,將最終的權重和偏差值儲存起來。這些值可以在預測時使用,而不需要重新訓練模型。
    • 模型持久化: 常見的儲存方法有使用Pickle、HDF5等格式,或儲存為特定框架(如TensorFlow、PyTorch)的模型文件。

程式範例

用簡單的程式範例,來說明感知器學習到分類的結果。

import numpy as np
import matplotlib.pyplot as plt

#data
X = np.array([[1,3,3],
[1,4,31],
[1,1,1],
[1,0,2]])

#真實資料
y = np.array([[1],
[1],
[-1],
[-1]])

lr =0.11 # 學習率learning rate : 修正的步伐
out = 0 # 預測值 Y
#權重
w = (np.random.random([3,1])-0.5)*2 # 3*1個亂數
def update():
global X, y, w,lr
out = np.sign(np.dot(X, w))  # 計算預測值
w_c = lr * (X.T.dot(y-out))/int(X.shape[0]) # 計算權重修正值
w = w + w_c
return w,out

for i in range(20):
w,out = update()
x1=[3,3]
y1=[4,31]
x2=[1,1]
y2=[0,2]

#印出權重的變化圖
k = -w[1]/w[2]
d = -w[0]/w[2]
print('k=',k)
print('d=',d)

xdata = (0,5)
plt.figure()
plt.plot(xdata, xdata*k+d,'r')
plt.scatter(x1,y1,c='b')
plt.scatter(x2,y2,c='y')
plt.show()

print(f'最後的結果 out :{out}')

# 驗證學習到的w
# 新的資料 將原本的x資料相反
new_X = np.array([[1,1,1],
[1,0,2],
[1,3,3],
[1,4,31]])
#驗證
out = np.sign(np.dot(new_X, w))
print(f'y : {y}')
print(f'out(預測結果) : {out}')

終端機輸出

終端機輸出


在最後新資料X,前兩行與後兩行交換,看終端機輸出最後預測的結果也是跟預測結果剛好是兩兩相反,代表學習到的w是有訓練好的。


程式碼詳細說明

  • global X, y, w, lr:
    • X(輸入特徵矩陣)、y(真實標籤向量)、w(權重向量)和lr(學習率)是全局變數,意味著這些變數在函數外部已經被定義,並且在函數內部可以直接使用和修改。
  • out = np.sign(np.dot(X, w)):
    • np.dot(X, w) 計算輸入特徵矩陣 X 和權重向量 w 的點積,得到感知器的輸出值(未經激活函數處理)。
    • np.sign(...) 將點積結果轉換為符號函數的輸出,即將輸出值轉換為 -1 或 1(對於二分類問題)。
    • out 是感知器的預測輸出。
  • w_c = lr * (X.T.dot(y - out)) / int(X.shape[0]):
    • y - out 計算真實標籤 y 和預測輸出 out 之間的差距
    • X.T.dot(y - out) 計算特徵矩陣的轉置 X.T 和損失函數結果的點積。
    • 乘以學習率 lr 縮放,控制每次更新的步伐大小。
    • 除以 int(X.shape[0])(即輸入樣本數量),計算平均差值,這樣更新的幅度不會因樣本數量變化而過大。
    • w_c 是權重的修正值,表示應該如何調整權重。
  • w = w + w_c:
    • 更新權重向量 w,加上修正值 w_c,使得模型朝著減少差值的方向進行調整。


總結

程式範例目的是通過一個簡單的更新規則來調整感知器的權重,使得模型的預測結果更接近真實值。每次更新權重時,計算出當前模型的預測值,然後根據預測值與真實值之間的差距來修正權重。

學習率 lr 控制了每次更新的幅度,以避免過大的步伐導致訓練不穩定或者過小的步伐導致收斂過慢。

avatar-img
128會員
215內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
本文會利用sklearn引入breast_cancer datasets來訓練,在處理數據的部份,特徵工程用兩種方式去做處理,分別是特徵選取與特徵萃取的方式去做比較。 特徵選取的方法中,使用了KNN 分類器來選出最重要的兩個特徵 特徵萃取的方法中,使用了PCA降維
前言 上一篇討論到如何訓練出模型,此篇將說明Streamlit建立的簡單Web應用程式的解說 Streamlit網頁App_貓狗辨識 連結 程式碼Github連結 [機器學習]CNN學習MNIST 手寫英文字母資料,用網頁展現成果_模型訓練篇 如何連動github與stramlit可以參考
streamlit與github連動程式庫,呈現即時預測手寫英文字母 整理了一下,先前學的機器學習利用Colab來訓練出能辨識手寫A~Z英文字母的模型,使用的模型是CNN(Convolutional Neural Network,CNN)模型 訓練好的模型,當然是要拿來應用,成果呈現
Sequential Feature Selection(SFS) 用中文來解釋為,逐一特徵選取訓練,找出最重要的特徵,以提高模型的性能和效率 SFS 的一些用途包括: 維度縮減: 在高維度數據中,許多特徵可能是多餘或不重要的,使用 SFS 可以找到最能代表數據的特徵,從而減少計算和記憶體需求
本文會利用sklearn引入breast_cancer datasets來訓練,在處理數據的部份,特徵工程用兩種方式去做處理,分別是特徵選取與特徵萃取的方式去做比較。 特徵選取的方法中,使用了KNN 分類器來選出最重要的兩個特徵 特徵萃取的方法中,使用了PCA降維
前言 上一篇討論到如何訓練出模型,此篇將說明Streamlit建立的簡單Web應用程式的解說 Streamlit網頁App_貓狗辨識 連結 程式碼Github連結 [機器學習]CNN學習MNIST 手寫英文字母資料,用網頁展現成果_模型訓練篇 如何連動github與stramlit可以參考
streamlit與github連動程式庫,呈現即時預測手寫英文字母 整理了一下,先前學的機器學習利用Colab來訓練出能辨識手寫A~Z英文字母的模型,使用的模型是CNN(Convolutional Neural Network,CNN)模型 訓練好的模型,當然是要拿來應用,成果呈現
Sequential Feature Selection(SFS) 用中文來解釋為,逐一特徵選取訓練,找出最重要的特徵,以提高模型的性能和效率 SFS 的一些用途包括: 維度縮減: 在高維度數據中,許多特徵可能是多餘或不重要的,使用 SFS 可以找到最能代表數據的特徵,從而減少計算和記憶體需求
你可能也想看
Google News 追蹤
Thumbnail
最近國泰世華CUBE App推出的「美股定期定額」功能,讓使用者可以方便地進行跨境理財(但讀者仍需根據自身需求審慎考量),除了享有美股定期定額的新功能,也同時享有台股定期定額的功能,可以一站滿足我們理財的需求! 透過國泰世華CUBE App線上開台股證券戶+複委託戶,流程最快僅需要5分鐘。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
人工智慧是什麼? 人工智慧(Artificial Intelligence, AI) 簡單來說,就是讓機器模仿人類的思考、學習和決策的能力。它就像是一個聰明的電腦程序,可以執行許多原本需要人類智慧才能完成的工作,例如: 語音辨識: 讓電腦聽懂人類的語言,像是 Siri、Google As
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
機器其實不是像人類這樣一的單字對應一個單字去翻譯, 而是使用「編碼器 Encoder」與「解碼器 Decoder」來做語言之間的翻譯。 其中編碼器的任務,是「閱讀 Read」與「處理 Process」完整的文本, 而解碼器的任務,則是「產生 Produced」翻譯過後的文本。
在人工智能的發展歷程中,早期的研究主要側重於將解決問題的規則輸入計算機,試圖通過啟蒙運動理性的思路模擬人類的智能行為。然而,這條路逐漸變得艱難,因為規則過於繁多,無法應對複雜的情境和語境。在這個背景下,一些科學家轉向了神經網絡算法,試圖模擬人腦的感知能力。
Thumbnail
6 篇文章|6601 字 思考觀|認知科學|管理學 本書用輕鬆對話的方式,談論以下主題。 目錄 一章:思考的基礎 01  認識你的大腦如何處理訊息: 介紹大腦如何接收和處理新訊息,以及這對學習的意義 02  建立思考的框架: 談論如何建立有效的思考框架,並解釋這如
Thumbnail
本文用輕鬆對話的方式,介紹大腦如何接收和處理新訊息,以及這對學習的意義。 認識你的大腦如何處理訊息 『大家好,今天我們要一起來探索一個非常有趣的主題:大腦如何處理訊息。你知道我們的大腦有多厲害嗎?』
Thumbnail
本篇文章分享了對創意和靈感來源的深入思考,以及如何將其轉化為實際的成果或解決方案的過程。透過學習、資料收集、練習、創新等方法,提出了將創意落實的思路和技巧。同時介紹了AI在外顯知識的自動化應用,以及對其潛在發展方向的討論。最後探討了傳統機器學習技術在模擬中的應用案例和對AI世界的影響。
機器學習是什麼? 簡單來說,機器學習就是訓練機器尋找Function的一段過程,而這個Function可以幫助我們解決我們遇到的問題,或是幫助我們
Thumbnail
📕 意識神學與認知科學的交匯處:  https://reurl.cc/9vEbld
Thumbnail
神經科學大師剖析感受、心智與意識之間關係的科學證據
Thumbnail
最近國泰世華CUBE App推出的「美股定期定額」功能,讓使用者可以方便地進行跨境理財(但讀者仍需根據自身需求審慎考量),除了享有美股定期定額的新功能,也同時享有台股定期定額的功能,可以一站滿足我們理財的需求! 透過國泰世華CUBE App線上開台股證券戶+複委託戶,流程最快僅需要5分鐘。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
人工智慧是什麼? 人工智慧(Artificial Intelligence, AI) 簡單來說,就是讓機器模仿人類的思考、學習和決策的能力。它就像是一個聰明的電腦程序,可以執行許多原本需要人類智慧才能完成的工作,例如: 語音辨識: 讓電腦聽懂人類的語言,像是 Siri、Google As
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
機器其實不是像人類這樣一的單字對應一個單字去翻譯, 而是使用「編碼器 Encoder」與「解碼器 Decoder」來做語言之間的翻譯。 其中編碼器的任務,是「閱讀 Read」與「處理 Process」完整的文本, 而解碼器的任務,則是「產生 Produced」翻譯過後的文本。
在人工智能的發展歷程中,早期的研究主要側重於將解決問題的規則輸入計算機,試圖通過啟蒙運動理性的思路模擬人類的智能行為。然而,這條路逐漸變得艱難,因為規則過於繁多,無法應對複雜的情境和語境。在這個背景下,一些科學家轉向了神經網絡算法,試圖模擬人腦的感知能力。
Thumbnail
6 篇文章|6601 字 思考觀|認知科學|管理學 本書用輕鬆對話的方式,談論以下主題。 目錄 一章:思考的基礎 01  認識你的大腦如何處理訊息: 介紹大腦如何接收和處理新訊息,以及這對學習的意義 02  建立思考的框架: 談論如何建立有效的思考框架,並解釋這如
Thumbnail
本文用輕鬆對話的方式,介紹大腦如何接收和處理新訊息,以及這對學習的意義。 認識你的大腦如何處理訊息 『大家好,今天我們要一起來探索一個非常有趣的主題:大腦如何處理訊息。你知道我們的大腦有多厲害嗎?』
Thumbnail
本篇文章分享了對創意和靈感來源的深入思考,以及如何將其轉化為實際的成果或解決方案的過程。透過學習、資料收集、練習、創新等方法,提出了將創意落實的思路和技巧。同時介紹了AI在外顯知識的自動化應用,以及對其潛在發展方向的討論。最後探討了傳統機器學習技術在模擬中的應用案例和對AI世界的影響。
機器學習是什麼? 簡單來說,機器學習就是訓練機器尋找Function的一段過程,而這個Function可以幫助我們解決我們遇到的問題,或是幫助我們
Thumbnail
📕 意識神學與認知科學的交匯處:  https://reurl.cc/9vEbld
Thumbnail
神經科學大師剖析感受、心智與意識之間關係的科學證據