八、神經網絡

一、為啥要有神經網絡?

在前面的幾篇博客中,很容易知道我們處理的都是線性的數據,例如:線性回歸和邏輯回歸,都是線性的算法
但是,實際上日常生活中所遇到的數據或者問題絕大多數還是非線性的
一般面對非線性數據,我們可以采用多項式回歸進行處理,詳細內容可以參考博文:五、線性回歸和多項式回歸實現
說白了就是改變橫縱坐標,是得數據線性化。例如:工資和年齡呈拋物線關系,但是工資和年齡的平方則呈線性關系,此時就可以將年齡的平方作為變量進行線性處理。

神經網絡是非線性的算法!!!
為啥捏?
在這里插入圖片描述
舉個栗子:
當你傳入x1,x2,x3三個數據時,對應三個權重參數,代入求和,即得到Σ,這一步是線性的,得到z
關鍵點來了!!!f為激活函數,這個函數很關鍵,因為它不是線性函數!!!
常用的激活函數有很多,這里假設使用的激活函數為sigmoid函數,將求和的值代入sigmoid函數中得y,由于激活函數是非線性的,z是線性的,代入得到的最終的結果y肯定是非線性的!!!
故稱神經網絡是非線性的算法。

神經網絡是非線性的算法可以解決實際生活中的非線性數據所帶來的一系列問題,故有需求才會有存在。

想當年Google的alphago大戰李世石,就是用的神經網絡。程序員搬了14臺服務器組成一個集群,前三局alphago贏了,但是第四局的時候輸了,這時候程序員喊暫停,說要調整參數,調整參數,這么多權重你知道調啥?神經網絡里面的隱藏層都是黑盒子,鬧呢?實際上他們應該是初始化參數,用一開始的模型參數,alphago為啥第四局會輸?主要是學習過擬合了。alphago一邊和李世石下棋一邊會去學習,重新更新權重參數。此時程序員初始化模型,后幾局alphago取得勝利。

二、常見的激活函數

1,Sigmoid激活函數

在這里插入圖片描述
在這里插入圖片描述

2,Tanh / 雙曲正切激活函數

在這里插入圖片描述
在這里插入圖片描述

3,ReLU 激活函數

在這里插入圖片描述
在這里插入圖片描述

4,ELU激活函數

在這里插入圖片描述在這里插入圖片描述

5,PReLU(Parametric ReLU)激活函數

在這里插入圖片描述
在這里插入圖片描述

6,Softmax激活函數

在這里插入圖片描述

在這里插入圖片描述

四、隱藏層的含義

大年初一,你去上別人家房頂感嘆人生,最后房頂塌了,傷到人了,你看你老媽會不會打你就完事了
大年初一,你去上自家房頂摘菜幫老媽做家務,你再看看你會不會挨打

大年初二,你閑著沒事玩火,還口嗨,我飲酒點孤燈,最后造成火災傷到其他人了,你看你老媽會不會打你就完事了
大年初二,你玩火去幫老媽做飯,你再看看你會不會挨打

大年初三,你又閑了,拿起家里面的菜刀跑出去,來尋找你的青春,最后腦子抽筋傷到人了,你覺得你媽會不會揍你
大年初三,你動刀幫老媽做飯,再看看你會不會挨打
在這里插入圖片描述
這里的隱藏層的作用就起到了推理演繹的作用,讓機器更加容易的進行判斷。
隱藏層越多,模型的推理演繹越多,也就是模型想的越多,預測結果也就會越準。

五、神經網絡相關概念

機器學習–擬人

有監督的機器學習:
多元線性回歸===回歸/預測
邏輯回歸===分類

神經網絡(仿生)===預測
神經網絡是非線性的算法,非線性的算法可以來解決更加復雜的問題
神經網絡算法也是后面深度學習的時候的基礎,例如:
ANN artificial neural network
MLP multiple layer percepton
CNN 卷積神經網絡
RNN 循環神經網絡
… …

Ⅰ,神經網絡需要考慮的基本要素有哪些?

答:1,激活函數的選擇。對應神經元里面的邏輯,包括兩部分,相乘相加(Σ)和非線性的變化(f激活函數),相乘相加是固定不變的;非線性的變化(f激活函數)可以有很多選擇,根據效果來
2,網絡拓撲結構。處理更加復雜的問題,就需要更多的網絡層,就需要每層上面設置更多的人工神經元
3,在去求解神經網絡模型(w0,w1,w2…wn)的時候,選擇什么樣優化算法,SGD一樣適用!

Ⅱ,激活函數有哪些?

答:1,Sigmoid函數,0到1之間 2,Tangent函數,-1到1之間 3,Relu函數,max(0,x)

Ⅲ,神經網絡算法的隱藏層意義何在?

答:1,如果有隱藏層的話,就多了推理有演繹的能力
2,每多一個隱藏層,推理和演繹的過程更多,考慮的更深入
3,隱藏層的隱藏節點如果比之前的層上面的節點數要多,相當于進行了升維,考慮的因素更多,考慮的更全面
4,隱藏層的隱藏節點如果比之前的層上面的節點數要少,相當于進行了降維,去前面進行了歸納總結

六、項目實戰

訓練一個兩次隱藏層(5個、2個),來進行訓練,最后判斷輸入的結果是0還是1

from sklearn.neural_network import MLPClassifier#訓練集參數
X = [[0., 0.], [1., 1.]]#輸入層有兩個輸入節點
y = [0, 1]#輸出層只有一個輸出節點
"""
solver='sgd'                優化算法,這里使用的是隨機梯度下降法
alpha=1e-5                  梯度下降那個系數,表示步長
activation='logistic'       激活函數,這里使用的是sigmoid函數
hidden_layer_sizes=(5, 2)   兩層隱藏層,分別是5個和2個
max_iter=2000               最大迭代次數
tol=1e-4                    閾值,迭代終止條件
"""
clf = MLPClassifier(solver='sgd', alpha=1e-5, activation='logistic', hidden_layer_sizes=(5, 2), max_iter=2000, tol=1e-4)
clf.fit(X, y)#測試集參數
predicted_value = clf.predict([[2., 2.], [-1., -2.]])
print(predicted_value)
predicted_proba = clf.predict_proba([[2., 2.], [-1., -2.]])
print(predicted_proba)print([coef.shape for coef in clf.coefs_])
print([coef for coef in clf.coefs_])

輸出結果:

"""
[1 1]
[[0.42020492 0.57979508][0.41408929 0.58591071]]
[(2, 5), (5, 2), (2, 1)]
[array([[ 0.08530062, -0.52124089, -0.29367687,  0.07361264,  0.02156327],[ 0.46945464,  0.22892193,  0.15913923, -0.52165397,  0.44346639]]), array([[-0.02538695,  0.02746434],[-0.12493617,  0.2892428 ],[-0.34109646,  0.05022483],[ 0.02789934, -0.49890685],[ 0.35519161,  0.46174166]]), array([[ 0.31453746],[-0.4271511 ]])]"""

網絡模型如下:
在這里插入圖片描述

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

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

相關文章

scale up 和 scale out

目前在調研sheepdog的時候,看到scale up和scale out的術語,理解了一下: 這兩個詞匯均是存儲系統方面的概念 scale up: 縱向擴展 購買更大的存儲,遷移原有數據到大的存儲中 (添加新一個新的機器) scale out…

icse ccf_ICSE的完整形式是什么?

icse ccfICSE:印度中學教育證書 (ICSE: Indian Certificate of Secondary Education) ICSE is an abbreviation of the Indian Certificate of Secondary Education (ICSE). It is an educational board of the school in India for class 10th which is private an…

Delphi XE2 之 FireMonkey 入門(18) - TLang(多語言切換的實現)

一個小小的 TLang 類, 實現多語言切換, 挺好的. 它的工作思路是:1、首先通過 AddLang(語言代碼) 添加語言類別, 如: AddLang(en)、AddLang(cn).2、每個語言代碼對應一個 TStrings 列表, 獲取方式如: LangStr[en]、LangStr[cn].3、可以手動填充這些數據、可以通過 LoadFromFile(…

leetcode 46. 全排列 思考分析

目錄1、題目2、思考3、優化1、題目 給定一個 沒有重復 數字的序列,返回其所有可能的全排列。 2、思考 老規矩,先畫出給出的例子的解空間樹: 觀察我們可以發現: 1、深度向下一層深入時,出現過的元素不能再出現&…

Arduino UNO R3開發板+MQ-2煙霧濃度傳感器+火焰傳感器+舵機+無源蜂鳴器+風扇+步進電機+WIFI模塊+RGB三色LED燈+SIM900A所構成的室內安全報警模塊

該系統模塊主要由Arduino UNO R3開發板MQ-2煙霧濃度傳感器火焰傳感器舵機無源蜂鳴器風扇步進電機WIFI模塊RGB三色LED燈SIM900A所組成,MQ-2煙霧濃度傳感器達到不同的閾值的時候,LED燈會通過不同的顏色來進行警示。煙霧濃度增大,LED燈依次顯示綠…

highcharts中series帶參數的賦值問題

需要得到的代碼如下: series: [{name: 棒號1,data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]}, {name: 棒號2,data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]}, {name: 棒號3,data: [-0.9, 0.6, 3.5, …

可編程ic卡 通用嗎_8255可編程IC

可編程ic卡 通用嗎Introduction 介紹 An 8255 programmable integrated circuit (IC) is an IC used for interfacing the microprocessor with the peripheral devices. It is a 40 pin IC which was introduced by INTEL to use with its 8085 and 8086 microprocessors. 82…

POJ 1944 Fiber Communications (枚舉 + 并查集 OR 線段樹)

題意 在一個有N(1 ≤ N ≤ 1,000)個點環形圖上有P(1 ≤ P ≤ 10,000)對點需要連接。連接只能連接環上相鄰的點。問至少需要連接幾條邊。 思路 突破點在于最后的結果一定不是一個環!所以我們枚舉斷邊,則對于…

九、邏輯回歸多分類和softmax多分類

一、邏輯回歸多分類 假設激活函數使用的是sigmoid函數 邏輯回歸多分類其實是多個二分類而已,若求三分類問題需要對訓練的數據樣本進行適當的修改調整即可,如何修改樣本數據可以參考邏輯回歸二分類和多分類本質區別,內容都一樣&#xff0c…

【C++grammar】繼承與構造test1代碼附錄

目錄1、main.cpp2、circle.cpp3、circle.h4、rectangle.cpp5、rectangle.h6、Shape.h1、main.cpp #include <iostream> #include <string> #include "Shape.h" #include "circle.h" #include "rectangle.h"//創建Shape/Circle/Rect…

hdu 4747 mex 線段樹+思維

http://acm.hdu.edu.cn/showproblem.php?pid4747 題意&#xff1a; 我們定義mex(l,r)表示一個序列a[l]....a[r]中沒有出現過得最小的非負整數&#xff0c; 然后我們給出一個長度為n的序列&#xff0c;求他所有的連續的子序列的mex(l,r)的和。 思路&#xff1a; 首先因為n的最大…

十、評估指標

我看過很多課程&#xff0c;不過內容都大差不差&#xff0c;也可以參考這篇模型評估方法 一、K折交叉驗證 一般情況&#xff0c;我們得到一份數據集&#xff0c;會分為兩類&#xff0c;一類是trainset訓練集&#xff0c;另一類十testset測試集。通俗一點也就是訓練集相當于平…

leetcode 47. 全排列 II 思考分析

題目 給定一個可包含重復數字的序列 nums &#xff0c;按任意順序 返回所有不重復的全排列。 思考分析以及代碼 這一題和前面的做過的兩個題目有所關聯&#xff1a; leetcode 46. 全排列 思考分析 再加上leetcode 491. 遞增子序列 思考分析類似的去重操作。 先畫出解空間樹…

python添加數組元素_在Python中向數組添加元素

python添加數組元素An array can be declared by using "array" module in Python. 可以通過在Python中使用“數組”模塊來聲明數組 。 Syntax to import "array" module: 導入“數組”模塊的語法&#xff1a; import array as array_alias_nameHere, im…

hdu 4472 Count(遞推即dp)

題目鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4472 代碼&#xff1a; #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #include <algorithm> #include <queue> #include <vector> …

如何在Java中同步ArrayList?

同步ArrayList (Synchronizing ArrayList) In java, there are two ways to synchronize ArrayList, 在Java中&#xff0c;有兩種同步ArrayList的方法&#xff0c; With the help of synchronizedList() method 借助syncedList()方法 With the help of CopyOnWriteArrayList&l…

十一、決策樹和隨機森林

這門課和另一門課內容都差不多&#xff0c;可以參考七、決策樹算法和集成算法該篇博文。 一、決策樹相關概念 邏輯回歸本質 邏輯回歸&#xff1a;線性有監督分類模型。常用求解二分類問題&#xff0c;要么是A類別要么是B類別&#xff0c;一般會以0.5作為劃分閾值&#xff0c…

【C++grammar】繼承與構造

目錄1.繼承1、Inheritance (繼承)2、避免一個類被繼承&#xff08; C11 &#xff09;3、繼承實例4、完整代碼5、繼承的優缺點是什么?2.繼承中的構造函數1、 派生類繼承的成員2、調用基類構造函數3.繼承中的默認構造函數1、基類的無參構造函數2、由編譯器自動生成的基類構造函數…

C語言預處理

所謂預處理是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理是&#xff23;語言的一個重要功能&#xff0c; 它由預處理程序負責完成。當對一個源文件進行編譯時&#xff0c; 系統將自動引用預處理程序對源程序中的預處理部分作處理&#xff0c; 處理完畢…

(轉)將cocos2dx項目從VS移植到Eclipse

本文轉自:http://www.cnblogs.com/Z-XML/p/3349518.html 引言&#xff1a;我們使用cocos2d-x引擎制作了一款飛行射擊游戲&#xff0c;其中創新性地融入了手勢識別功能。但是我們在移植過程中遇到了很多的問題&#xff0c;同時也發現網上的資料少而不全。所以在項目行將結束的時…