1. 程式人生 > >機器學習演算法與Python學習

機器學習演算法與Python學習

1. 引言

機器學習技術為現代社會的許多領域提供了強大的技術支援:從網路搜尋到社交網路的內容過濾,再到電子商務網站的產品推薦。機器學習技術正越來越多的出現在消費級產品上,比如照相機和智慧手機。 機器學習系統可用於識別影象中的物件,將語音轉換成文字,選擇搜尋結果的相關項,以及匹配新聞、帖子或使用者感興趣的其他東西。 類似的應用越來越多,它們都使用了一種叫做深度學習的技術。

深度學習(也稱為深層結構學習、層次學習或深度機器學習)是基於對資料中的高階抽象進行建模的演算法,它屬於機器學習的分支。最簡單的例子,你可以有兩組神經元:接收輸入訊號的神經元和傳送輸出訊號的神經元。當輸入層接收到輸入時,它將輸入的修改版本傳遞給下一層。在深層網路中,輸入和輸出層之間有很多層(層並不是由神經元構成,這裡只是為了幫助你思考),這些層允許演算法使用多個處理層,這些層包含了多個線性和非線性變換。

近來,深度學習技術使得機器學習發生了革命性的變化,並出現了很多偉大的成果。 它們大大改進了語音識別、視覺物件識別、物件檢測以及許多其他領域(如藥物發現和基因組學)的技術。 “深度學習”這個術語最早由Dechter(1986)引入機器學習,由Aizenberg等人(2000)引入人工神經網路(NN)。 深度學習的進一步普及得益於由Alex Krizhevsky發明的被稱為“AlexNet”的卷積網路架構的出現。“AlexNet”在2012年的ImageNet比賽中擊敗了其他所有的影象處理演算法,開創了在影象處理中使用深度學習架構的先河。

2. 深度學習架構

生成式深度架構,旨在描述用於模式分析或合成目的的觀測資料或可見資料的高階相關特性,以及描述可見資料及其關聯類的聯合統計分佈的特徵。

在後一種情況下,使用貝葉斯規則可以將這種型別的架構變成辨別式深度架構。

辨別式深度架構,旨在直接提供模式分類的辨別力,通常通過描述基於可見資料種類的後驗分佈來描述。

混合式深度架構,其目的是辨別,但通常輔以通過更好的優化或規則化的生成架構的結果,或者是其辨別標準被用來學習類別1中的任何一個深度生成模型的引數

儘管深度學習架構的分類很複雜,但在實踐中經常用到的有深度前饋網路、卷積網路和迴圈網路。

3. 深度前饋網路

前饋網路,通常被稱為前饋神經網路或多層感知器(MLP),它是典型的深度學習模式。前饋網路的目標是逼近某個函式f。例如,對於一個分類器,y=f(x)表示的是將輸入x對映到類別y。前饋網路定義了一個對映 y=f(x;θ),並學習能產生最佳逼近函式的引數θ的值。

簡單來說,網路可以定義為輸入、隱藏和輸出節點的組合。資料從輸入節點流入,在隱藏節點中進行處理,然後通過輸出節點產生輸出。資訊流經從x評估的函式,通過用於定義f的中間計算,最後到輸出y。該網路中沒有反饋連線,其中模型的輸出反饋到自身,因此模型被稱為前饋網路。該模型如圖[1]所示。

640?wx_fmt=jpeg
圖[1]:前饋神經網路

4. 卷積神經網路

640?wx_fmt=png

在機器學習中,卷積神經網路(CNN或ConvNet)是一種前饋人工神經網路,其神經元之間的連線模式是受動物視覺皮層組織的啟發而發明出來的。個別皮質神經元對受限區域的刺激響應稱為**感受野**。不同神經元的感受野部分重疊,這使得這些感受野像瓦片一樣平鋪。單個神經元對其感受野內的刺激的反應可以用卷積運算近似地數學化。卷積網路的靈感來自於生物學,是多層感知器的變體。它在影象和視訊識別、推薦系統和自然語言處理中具有廣泛的應用。

LeNet是第一個卷積神經網路,它推動了深度學習領域的發展。自1988年以來,Yann LeCun的這項開創性工作多次成功迭代後成為了LeNet5。當時的LeNet架構主要用於字元識別,如閱讀郵政編碼、數字等等。

640?wx_fmt=jpeg
圖[2]:一個簡單的卷積神經網路模型

ConvNet有四個主要元件,如圖2所示:
1. 卷積層
2. 啟用函式
3. 池化層
4. 完全連線層

4.1 卷積層

卷積層基於術語“卷積”,它是對兩個變數執行數學運算(f*g),以產生第三個變數。 它與互相關類似。 卷積層的輸入是一幅 m x m x r 的影象,其中m是影象的高度和寬度,r是通道數,例如,對於RGB影象,r = 3 。 卷積層有大小為n x n x q的k個過濾器(或核心),其中n小於影象的維度,並且q小於等於通道數r,並且每個核心都可以不同。

4.2 啟用函式

要實現複雜的對映函式,需要有非線性的啟用函式,這樣引入非常重要的非線性屬性,使之能夠近似於任何函式。啟用函式對於壓縮來自神經元的無界線性加權和也是非常重要的。這對於避免在處理層次上積累高值非常重要。有很多經常被用到的啟用函式,比如Sigmoid、tanh和ReLU。

4.3 池化層

池化是一個基於樣本的離散化過程。它的目標是對輸入表示(影象、隱藏層輸出矩陣等等)進行降取樣,減少其維度,並允許對包含在子區域中的特徵進行假設。這樣做的部分原因是為了提供一種抽象的表示形式來避免過度擬合。同樣,它通過減少要學習的引數個數來降低計算成本,併為內部表示提供基本的轉化恆定性。比較突出的池化技術有:最大池化,最小池化和平均池化。

640?wx_fmt=png
圖[3]:2*2過濾器的最大池化示例

4.4 完全連線層

術語“完全連線”意味著上一層中的每個神經元都連線到下一層的每個神經元。完全連線層是傳統的多層感知器,它使用softmax啟用函式或輸出層中的任何其他類似函式。

5. 迴圈神經網路

在傳統的神經網路中,我們假設所有的輸入(和輸出)是相互獨立的。但是對於許多的任務來說,這是一個很糟糕的假設。如果你想預測一個句子中的下一個單詞,你最好知道哪些前面的單詞是什麼。 RNN之所以稱為迴圈,因為它們對序列的每個元素執行相同的任務,而輸出依賴於先前的計算。還有一種理解RNN的方法,我們可以認為它有“記憶”的,它會捕獲到截至目前計算出來的所有資訊。RNN中有迴圈,這使得在讀入輸入時能夠跨神經元傳遞資訊。在圖[4]中,x_t是某種輸入,A是RNN的一部分,h_t是輸出。RNN有一些特殊的型別,比如LSTM、雙向RNN,GRU等等。

640?wx_fmt=png
圖[4]:RNN模型

RNN可用於NLP、機器翻譯、語言建模、計算機視覺、視訊分析、影象生成、影象字幕等,這是因為在RNN中可以放置任意數量的輸入和輸出,並讓它們一一對應、多對多對應。它架構存在多種形式,如圖[5]所示。

640?wx_fmt=png
圖[5]:RNN描述了對向量序列的操作

6. 應用

在深度學習領域已經有了很多的研究,並且有很多特別的問題都使用深度學習模型得到了解決。這裡有一些深度學習方面的優秀應用:

6.1 黑白影象彩色化

深度學習可用於參照照片中的物件及其上下文來對影象進行著色,就像人類進行著色一樣。這個應用需使用非常大的卷積神經網路和監督層,通過新增顏色來重現影象。

6.2 機器翻譯

文字翻譯可以在沒有對序列進行任何預處理的情況下進行,它允許演算法學習單詞之間的依賴關係及其與另一種語言之間的對映。大型LSTM迴圈神經網路的堆疊網路可用於機器翻譯。

6.3 照片中物體的分類及檢測

該任務是將照片中的物件歸類到已知的物件組中去。在樣例評測中,通過使用非常大的卷積神經網路能夠獲得非常好的結果。 Alex Krizhevsky等人在ImageNet分類中取得的突破性成果,被稱為AlexNet。

6.4 自動手寫生成

給定一個手寫示例語料庫,然後為給定的單詞或短語生成新的筆跡。在筆跡樣本被建立時,筆跡將作為一系列的座標提供給筆。通過這個語料庫,演算法會學習筆的運動與字母之間的關係,然後生成新的示例。

6.5 自動打遊戲

在這個應用中,模型將學習如何僅基於螢幕上的畫素點來玩電腦遊戲。這在深度增強模型領域中是一個非常難的任務,因為這個,DeepMind(現在是Google的一部分)贏得了很高的聲譽。

6.6 生成模型聊天機器人

使用基於序列的模型來建立聊天機器人,該機器人在很多真實的對話資料集上進行訓練,並學會生成自己的答案。要了解更多的詳細資訊,請訪問這個連結。

7. 總結

從本文可以得到這樣的結論:深度學習模型可以用於各種任務,因為它能夠模擬人腦。截止目前,專家們已經在這方面做了大量的研究,而且在不久將還有許多研究工作要做。儘管目前還存在信任問題,但在不久的將來,這個問題將會變得更加明朗。

640?wx_fmt=png

相關推薦

機器學習演算法Python學習

1. 引言機器學習技術為現代社會的許多領域提供了強大的技術支援:從網路搜尋到社交網路的內容過濾,

機器學習演算法Python實踐之邏輯迴歸(Logistic Regression)(二)

#!/usr/bin/python # -*- coding:utf-8 -*- import numpy as np from numpy import * import matplotlib.pyplot as plt #處理資料函式 def loadDataSet():

機器學習演算法Python實踐(9)

  ElasticNet 是一種使用L1和L2先驗作為正則化矩陣的線性迴歸模型.這種組合用於只有很少的權重非零的稀疏模型,比如:class:Lasso, 但是又能保持:class:Ridge 的正則化屬性.我們可以使用 l1_ratio 引數來調節L1和L2的凸

機器學習演算法Python實踐之(七)邏輯迴歸(Logistic Regression)

Logistic regression (邏輯迴歸)是當前業界比較常用的機器學習方法,用於估計某種事物的可能性。比如某使用者購買某商品的可能性,某病人患有某種疾病的可能性,以及某廣告被使用者點選的可能性等。(注意這裡是:“可能性”,而非數學上的“概率”,logisitc迴

機器學習之樸素貝葉斯(NB)分類演算法Python實現

樸素貝葉斯(Naive Bayesian)是最為廣泛使用的分類方法,它以概率論為基礎,是基於貝葉斯定理和特徵條件獨立假設的分類方法。 一、 概述 1.1 簡介 樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假

機器學習演算法Python實現 (1):logistics迴歸 線性判別分析(LDA)

本文為筆者在學習周志華老師的機器學習教材後,寫的課後習題的的程式設計題。之前放在答案的博文中,現在重新進行整理,將需要實現程式碼的部分單獨拿出來,慢慢積累。希望能寫一個機器學習演算法實現的系列。 本文主要包括: 1、logistics迴歸 2、線性判別分析(LDA) 使

【備忘】python神經網路演算法深度學習視訊

先準備好一個大硬碟,照著這個學習路線學習!站長也在學習這個教程,沿著數學->演算法->機器學習->資料探勘(分析)->人工智慧的學習路線學習。 第00_安裝包、開發工具、註冊(贈品) 第01階段-基礎必備篇    python3.6視訊零基礎2周快速

機器學習實戰python資料探勘 python計算機視覺

兩本書的 pdf都比較好找  點這裡是機器學習實戰的CSDN介紹   這裡是對應原始碼     個人部落格也列出過可執行的pythin資料探勘原始碼  python計算機視覺的官網與原始碼在這裡 因為看了機器學習實戰

Kaggle實戰1-機器學習演算法流程概述 + house-price example

參考連結:https://blog.csdn.net/han_xiaoyang/article/details/50469334  機器學習問題解決思路 上面帶著代價走馬觀花過了一遍機器學習的若干演算法,下面我們試著總結總結在拿到一個實際問題的時候,如果著手使用機器學習演算法去

Spark MLlib 機器學習演算法原始碼解析(網路課程—第一期)

《Spark MLlib 機器學習演算法與原始碼解析》spark是一個開源叢集運算框架,最初是由加州大學柏克利分校AMPLab所開發。Spark使用了記憶體內運算技術,在記憶體上的運算速度比Hadoop

機器學習演算法Python實現 (3):決策樹剪枝處理

更新,經評論提醒,我發現自己搞錯了比較根本的定義。CART決策樹假設決策樹是二叉樹,這裡給出的程式碼生成的決策樹不是二叉樹。所以下面的程式碼用”基於基尼指數生成的決策樹“來形容更加適當一點。 -----------------------------------------

【 專欄 】- 機器學習理論Python實現

機器學習理論與Python實現 注重理論與實踐的結合。從演算法原理出發,由淺入深,詳細介紹演算法的理論,並配合目前流行的Python語言,實現每一個演算法,以加強對機器學習演算法理論的理解、增強實際的演算法實踐能力,最終達到熟練掌

機器學習演算法人工智慧

最近幾天csdn正在推選csdn部落格之星,希望讀者能夠給我奉上寶貴的一票我會再接再厲,為大家寫

機器學習演算法程式設計--鄭捷 C45D演算法 python3實現 修改部分

此演算法需要更改的地方出除了上篇寫到的loadDataSet函式,在課本中getBestFeat()函式中資訊增益計算公式處給出的矩陣相除在py3無法執行需要改為dot(A,B.T)形式具體程式碼 de

Redis數據庫的學習python的交互

刪除 c語言 存在 oracle get 項目 __name__ api 緩存 1. 數據庫簡介:   當前主要使用兩種類型的數據庫:關系型數據庫(RDBMS)、非關系型數據庫(NoSQL);     (1). 關系型數據庫RDBMS: 是建立在關系模型基礎上的數據庫

博眾娛樂平臺開發python學習

獲取 index () self fin 獲取數據 getitem rep 地方 可叠代的對象、叠代器和生成器叠代是數據處理的基石。掃描內存中方不下的數據集時,我們要找一種惰性獲取數據項的方式,即按需一次獲取一個數據項。這就是叠代器模式。 1可叠代對象 1.1序列可以叠代的

【資料科學系統學習機器學習演算法 # 西瓜書學習記錄 [7] 支援向量機(一)

這兩篇內容為西瓜書第 6 章支援向量機 6.1,6.2,6.4,6.3 的內容: 6.1 間隔與支援向量 6.2 對偶問題 6.4 軟間隔與正則化 6.3 核函式 由於本章內容較多,分為兩篇來敘述。本篇所包含內容為間隔與支援向量和對偶問題。 如移動端無法正常

【資料科學系統學習機器學習演算法 # 西瓜書學習記錄 [8] 支援向量機(二)

這兩篇內容為西瓜書第 6 章支援向量機 6.1,6.2,6.4,6.3 的內容: 6.1 間隔與支援向量 6.2 對偶問題 6.4 軟間隔與正則化 6.3 核函式 由於本章內容較多,分為兩篇來敘述。本篇所包含內容為軟間隔與正則化和核函式。關於間隔與支援向量和

【資料科學系統學習機器學習演算法 # 西瓜書學習記錄 [9] 決策樹

本篇內容為西瓜書第 4 章決策樹 4.1,4.2,4.3 的內容: 4.1 基本流程 4.2 劃分選擇 4.3 剪枝處理 如移動端無法正常顯示文中的公式,右上角跳至網頁即可正常閱讀。 決策樹 (decision tree) 是一種基本的分類與迴歸方法。在分類問

【資料科學系統學習機器學習演算法 # 西瓜書學習記錄 [10] 決策樹實踐

本篇內容為《機器學習實戰》第 3 章決策樹部分程式清單。所用程式碼為 python3。 決策樹優點:計算複雜度不高,輸出結果易於理解,對中間值的缺失不敏感,可以處理不相關特徵資料。缺點:可能會產生過度匹配問題。適用資料型別:數值型和標稱型 在構造決策樹時,我們需要