感知機和神經網絡

引入?

什么是神經網絡?

我們今天學習的神經網絡,不是人或動物的神經網絡,但是又是模仿人和動物的神經網絡而定制的神經系統,特別是大腦和神經中樞,定制的系統是一種數學模型或計算機模型,神經網絡由大量的人工神經元連接而成,大多數時候人工神經網絡能夠在外界信息的基礎上改變內部結構,是一種自適應的改變的過程,現代的神經網絡是一種基于傳統統計學的建模工具,常用來對輸入和輸出之間復雜的關系進行建模或者探索數據之間的模式

人或動物的神經元如下,當人感受到刺激的時候,信號會通過傳道部傳遞信號,最后會作用在效應部做出相應的反應。神經網絡是一種運算模型,有大量的節點,神經元節點之間構成了聯系,這些神經元負責傳遞信息和加工信息,神經元可以被訓練和強化,形成一種固定的形態,對一些特殊的信息會有更強烈的反應。

這張圖片是一張古風女士的圖片,因為在我們的生活中的經驗已經告訴我們人的模樣,椅子的樣子,衣服的模樣。

所以通過我們強大的成熟的視覺神經系統判定她是一個古風女孩。

計算機系統和人腦一樣,也是通過不斷訓練,告訴計算機那些是貓,那些是狗,會通過一個數學模型來得到結果。比如:百度圖片搜索就能識別圖片的物體,地點以及其他信息,都歸功于計算機神經系統的突破發展。

一個可視化的神經網絡系統,由多層的神經元組成,為了區分不同的神經層,我們通常將輸入信息的叫做輸入層,中間傳遞信息叫做隱藏層或隱層,輸出層就是將前面傳遞的信息形成輸出的結果,通過該結果能直接看到計算機對物體的認知,隱層通常由1層或多層組成,負責輸入層的加工信息的處理,類似于人類的神經系統,通過多層的神經加工才能達到最后的效果。


?一個可視化的神經網絡系統,由多層的神經元組成,為了區分不同的神經層,我們通常將輸入信息的叫做輸入層,中間傳遞信息叫做隱藏層或隱層,輸出層就是將前面傳遞的信息形成輸出的結果,通過該結果能直接看到計算機對物體的認知,隱層通常由1層或多層組成,負責輸入層的加工信息的處理,類似于人類的神經系統,通過多層的神經加工才能達到最后的效果。

現在的深度學習就是從神經網絡發展而來,當神經網絡中間的隱層非常之多的時候可處理的信息也會非常之多,這也是叫深度神經網絡的原因。當隱藏層只有1個時候,是神經網絡中的“BP神經網絡”模型,而沒有隱層,只有輸入輸出層的是最簡單的“感知機”分類模型。

  • 感知機由輸入層和輸出層組成,沒有隱藏層。它接收多個輸入信號,通過加權求和后,如果超過某個閾值,則輸出一個信號,這種結構使其成為一個線性分類器。
  • 感知機通過錯誤修正算法來更新權重。當模型做出錯誤預測時,它會調整權重以減少未來的錯誤。

感知機作為神經網絡的基礎,雖然簡單,但為理解更復雜的神經網絡模型提供了重要的起點。?

通常計算機能看到的和處理的和人類會有很大的不同,比如圖片和聲音、文字,他們在計算機中均已0或1的方式存在再神經網絡中,通過對這一些0-1數字的加工和處理生成另外一些數字,而生成的數字也有了物理上的意義了。


神經網絡訓練的過程

首先,需要準備大量的數據集,進行上千萬次的訓練,但是計算機不一定能識別正確,比如一張圖原來是貓的被識別成了狗,雖然識別錯誤了,但是這個錯誤是非常有價值的,我們可以從這次錯誤中總結和學習經驗,計算機一般是根據正確的答案和預測的答案做對比產生一個差別,在將這個差別反向傳遞回去,每一個神經元往正確的方向上改動一點點,這樣下一次識別的時候,通過已經改進的神經網絡識別的正確率會提高一些,將每次一點點的提高加上上千萬次的訓練,最終的識別效果也就被提高了,最后到了驗收結果的時候原來是貓現在也被識別為貓。

計算機中的每個神經元都有屬于他的激勵函數,我們可以利用這些函數給計算機一個刺激行為。

當第一次給計算機看貓的圖片的時候,只有部分神經元被激勵或激活,被激活的神經元會傳遞給下一級別的神經元,這些傳遞的信息也是計算機中最為重要的信息,也就是對輸出結果最優價值的信息,如果預測成了狗狗,那么神經元的一些參數就會被調整,有一些神經元變得遲鈍,有一些則變得敏感起來,這就說明所有神經元參數都在被改變,往識別正確的方向去改變了,被改動的參數也能逐漸的預測出正確的答案,這就是神經網絡的過程。???

感知機

感知機只有輸出層神經元進行激活函數處理,即只擁有一層功能神經元,學習能力非常有限,感知機的學習皆在求將訓練數據進行線性劃分的分離超平面。為此,導入基于誤分類的損失函數,利用梯度下降法對損失函數進行極小化,求得感知機模型。?

激勵函數


BP神經網絡

BP中采用的梯度求解最優參數的方法是最常用的方法,但是如果誤差函數在當前點的梯度為0,已達到了局部最小,更新量將為0,這意味著迭代將會停止,但此時如果誤差函數僅僅有一個局部的最小,那么此時的局部最小將變為全局最小;如果誤差函數有多個局部最小,則不能保證找到的解釋全部最小,這種情形也是參數陷入局部最小的情況。

  1. 以不同的參數值初始化多個網絡,按不同方法標準化訓練后,取最小的解作為最終參數。這相當于從多個不同的初始點開始搜索,這樣就可能陷入不同的局部最小,從中選擇可能更接近全局最小的結果。
  2. 使用“模擬退火”技術在每一步都以一定的概率接受比當前更差的結果,從而有助于跳出局部最小。在每次迭代的過程中,接受“次優解”的概率要隨著時間的推移而逐漸降低,從而保證算法的穩定性。

  3. 使用隨機梯度下降。與標準的梯度下降算法精確計算梯度不同。隨機梯度下降法在計算梯度的時候加入了隨機因素。即便陷入了局部最小值點,它計算的梯度仍不可能為0,這樣就跳出了局部最小搜索。

梯度下降法

找到一個拋物線的最低點:

首先求導,令導數為0,求值。l為學習率,為(0,1]的值,設置的小,需要很長時間才能到最低點。設置的大,可能錯過最低點。一般設置的時候首先設置的大一些,等到快接近最低點步子放慢一些。

import numpy as np
def tanh(x): ?return np.tanh(x)def tanh_deriv(x): ?return 1.0 - np.tanh(x)*np.tanh(x)def logistic(x): ?return 1/(1 + np.exp(-x))def logistic_derivative(x): ?return logistic(x)*(1-logistic(x))class NeuralNetwork: ??def __init__(self, layers, activation='tanh'): ?""" ?:param layers: A list containing the number of units in each layer.Should be at least two values ?:param activation: The activation function to be used. Can be"logistic" or "tanh" ?""" ?if activation == 'logistic': ?self.activation = logistic ?self.activation_deriv = logistic_derivative ?elif activation == 'tanh': ?self.activation = tanh ?self.activation_deriv = tanh_derivself.weights = [] ?for i in range(1, len(layers) - 1): ?self.weights.append((2*np.random.random((layers[i - 1] + 1, layers[i] + 1))-1)*0.25) ?self.weights.append((2*np.random.random((layers[i] + 1, layers[i + 1]))-1)*0.25) ? ??def fit(self, X, y, learning_rate=0.2, epochs=10000): ? ? ? ??X = np.atleast_2d(X) ? ? ? ??temp = np.ones([X.shape[0], X.shape[1]+1]) ? ? ? ??temp[:, 0:-1] = X ?# adding the bias unit to the input layer ? ? ? ??X = temp ? ? ? ??from NeuralNetwork import NeuralNetwork
import numpy as npnn = NeuralNetwork([2,2,1], 'tanh') ? ??
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) ? ??
y = np.array([0, 1, 1, 0]) ? ??
nn.fit(X, y) ? ??
for i in [[0, 0], [0, 1], [1, 0], [1,1]]: ? ?print(i, nn.predict(i))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10647.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

圖像處理:圖像噪聲添加

文章目錄 前言一、高斯噪聲二、椒鹽噪聲三、泊松噪聲四、斑點噪聲五、指數噪聲六、均勻噪聲總結 前言 本文主要介紹幾種添加圖像噪聲的方法,用于數據增強等操作。 以下圖為例。 一、高斯噪聲 高斯噪聲就是給圖片添加一個服從高斯分布的噪聲,可以通過調…

vLLM初探

vLLM是伯克利大學LMSYS組織開源的大語言模型高速推理框架,旨在極大地提升實時場景下的語言模型服務的吞吐與內存使用效率。vLLM是一個快速且易于使用的庫,用于 LLM 推理和服務,可以和HuggingFace 無縫集成。vLLM利用了全新的注意力算法「Page…

Python+PySpark數據計算

1、map算子 對RDD內的元素進行逐個處理,并返回一個新的RDD,可以使用lambda以及鏈式編程,簡化代碼。 注意:再python中的lambda只能有行,如果有多行,要寫成外部函數;(T)-&…

train_gpt2_fp32.cu - cudaCheck

源碼 // CUDA error checking void cudaCheck(cudaError_t error, const char *file, int line) {if (error ! cudaSuccess) {printf("[CUDA ERROR] at file %s:%d:\n%s\n", file, line,cudaGetErrorString(error));exit(EXIT_FAILURE);} }; 解釋 該函數用于檢查CU…

無人機路徑規劃:基于鯨魚優化算法WOA的復雜城市地形下無人機避障三維航跡規劃,可以修改障礙物及起始點(Matlab代碼)

一、部分代碼 close all clear clc rng(default); %% 載入數據 data.S[50,950,12]; %起點位置 橫坐標與縱坐標需為50的倍數 data.E[950,50,1]; %終點點位置 橫坐標與縱坐標需為50的倍數 data.Obstaclexlsread(data1.xls); data.numObstacleslength(data.Obstacle(:,1)); …

連接和斷開與服務器的連接

要連接到服務器,通常需要在調用mysql時提供一個MySQL用戶名,很可能還需要一個密碼。如果服務器在除了登錄的計算機之外的機器上運行,您還必須指定主機名。聯系您的管理員以找出應該使用哪些連接參數來連接(即使用哪個主機、用戶名…

TypeError: can only concatenate str (not “int“) to str

TypeError: can only concatenate str (not "int") to str a 窗前明月光,疑是地上霜。舉頭望明月,低頭思故鄉。 print(str_len len(str_text) : len(a)) 試圖打印出字符串 a 的長度,但是在 Python 中拼接字符串和整數需要使用字符…

【微服務】spring aop實現接口參數變更前后對比和日志記錄

目錄 一、前言 二、spring aop概述 2.1 什么是spring aop 2.2 spring aop特點 2.3 spring aop應用場景 三、spring aop處理通用日志場景 3.1 系統日志類型 3.2 微服務場景下通用日志記錄解決方案 3.2.1 手動記錄 3.2.2 異步隊列es 3.2.3 使用過濾器或攔截器 3.2.4 使…

triton編譯學習

一 流程 Triton-MLIR: 從DSL到PTX - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/671434808Superjomns blog | OpenAI/Triton MLIR 遷移工作簡介https://superjom

基于STM32單片機的環境監測系統設計與實現

基于STM32單片機的環境監測系統設計與實現 摘要 隨著環境污染和室內空氣質量問題的日益嚴重,環境監測系統的應用變得尤為重要。本文設計并實現了一種基于STM32單片機的環境監測系統,該系統能夠實時監測并顯示室內環境的溫濕度、甲醛濃度以及二氧化碳濃…

C語言題目:A+B for Input-Output Practice

題目描述 Your task is to calculate the sum of some integers 輸入格式 Input contains an integer N in the first line, and then N lines follow. Each line starts with a integer M, and then M integers follow in the same line 輸出格式 For each group of inpu…

Sass詳解

Sass(Syntactically Awesome Stylesheets)是一種CSS預處理器,它允許你使用變量、嵌套規則、混入(Mixin)、繼承等功能來編寫CSS,從而使CSS代碼更加簡潔、易于維護和擴展。下面是Sass的詳細解釋: …

【docker】容器優化:一行命令換源

原理: 根據清華源提供的Ubuntu 軟件倉庫進行sources.list替換 ubuntu | 鏡像站使用幫助 | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror 1、換源 echo "">/etc/apt/sources.list \&& echo "# 默認注釋了源碼鏡像以提高 apt …

新iPadPro是怎樣成為蘋果史上最薄產品的|Meta發布AI廣告工具全家桶| “碾碎一切”,蘋果新廣告片引爭議|生成式AI,蘋果傾巢出動

Remini走紅背后:AI生圖會是第一個超級應用嗎?新iPadPro是怎樣成為蘋果史上最薄產品的生成式AI,蘋果傾巢出動Meta發布AI廣告工具全家桶,圖像文本一鍵生成解放打工人蘋果新iPadPro出貨量或達500萬臺,成中尺寸OLED發展關鍵…

8、QT——QLabel使用小記2

前言:記錄開發過程中QLabel的使用,持續更新ing... 開發平臺:Win10 64位 開發環境:Qt Creator 13.0.0 構建環境:Qt 5.15.2 MSVC2019 64位 一、基本屬性 技巧:對于Qlabel這類控件的屬性有一些共同的特點&am…

QToolButton的特殊使用

QToolButton的特殊使用 介紹通過QSS取消點擊時的凹陷效果點擊時的凹陷效果通過QSS取消點擊時的凹陷效果 介紹 該篇文章記錄QToolButton使用過程中的特殊用法。 通過QSS取消點擊時的凹陷效果 點擊時的凹陷效果 通過QSS取消點擊時的凹陷效果 #include <QToolButton> #i…

Dockerfile中的CMD和ENTRYPOINT

Shell格式和Exec格式 在Dockerfile中&#xff0c;RUN、CMD和ENTRYPOINT指令都可以使用兩種格式&#xff1a;Shell格式和Exec格式。 exec 格式&#xff1a;INSTRUCTION ["executable","param1","param2"] shell 格式&#xff1a; INSTRUCTION c…

【深耕 Python】Quantum Computing 量子計算機(5)量子物理概念(二)

寫在前面 往期量子計算機博客&#xff1a; 【深耕 Python】Quantum Computing 量子計算機&#xff08;1&#xff09;圖像繪制基礎 【深耕 Python】Quantum Computing 量子計算機&#xff08;2&#xff09;繪制電子運動平面波 【深耕 Python】Quantum Computing 量子計算機&…

ios 開發如何給項目安裝第三方庫,以websocket庫 SocketRocket 為例

1.brew 安裝 cococapods $ brew install cocoapods 2、找到xcode項目 的根目錄&#xff0c;如圖&#xff0c;在根目錄下創建Podfile 文件 3、在Podfile文件中寫入 platform :ios, 13.0 use_frameworks! target chat_app do pod SocketRocket end project ../chat_app.x…

Python實戰開發及案例分析(18)—— 邏輯回歸

邏輯回歸是一種廣泛用于分類任務的統計模型&#xff0c;尤其是用于二分類問題。在邏輯回歸中&#xff0c;我們預測的是觀測值屬于某個類別的概率&#xff0c;這通過邏輯函數&#xff08;或稱sigmoid函數&#xff09;來實現&#xff0c;該函數能將任意值壓縮到0和1之間。 邏輯回…