深度學習筆記(基礎篇)——(一)機器學習與深度學習簡介
機器學習是最基礎的(當下初創公司和研究實驗室的熱點領域之一)。深度學習是非常嶄新和有影響力的前沿領域。
一、定義
1、機器學習
從樣本中學習的智慧程式。是資料驅動的。90年代初提出。強調的是給計算機程式(或者機器)輸入一些資料後,它學習這些資料,而這個學習的步驟是明確的,學習結果是對已有資料的分類和一個預測模型,預測模型可用於對未知資料的預測。如下圖,傳統程式設計與機器學習的區別:
2、深度學習
它是學習表示的數學框架。強調的是使用的模型(例如卷積神經網路)。模型中的引數可以從資料中學習獲得。在深度學習的模型中,很流行的就是被用在大規模影象識別中的卷積神經網路(Convolutional Neural Nets,CNN),簡稱ConvNets。深度學習需要非常大的計算能力,大多在GPU進行計算。學習深度學習,需要一些線性代數的知識。
在人工智慧領域,有一個方法叫機器學習。在機器學習這個方法裡,有一類演算法叫神經網路。神經網路如下圖所示:
上圖中每個圓圈都是一個神經元,每條線表示神經元之間的連線。我們可以看到,上面的神經元被分成了多層,層與層之間的神經元有連線,而層內之間的神經元沒有連線。最左邊的層叫做輸入層,這層負責接收輸入資料;最右邊的層叫輸出層,我們可以從這層獲取神經網路輸出資料。輸入層和輸出層之間的層叫做隱藏層。
隱藏層比較多(大於2)的神經網路
深度學習,就是使用深層架構(比如,深度神經網路)的機器學習方法。
深度神經網路在程式當中其實就是一堆資料的矩陣計算,因此矩陣計算的速度也是一個優化的點。
那麼深層網路和淺層網路相比有什麼優勢呢?簡單來說深層網路能夠表達力更強。事實上,一個僅有一個隱藏層的神經網路就能擬合任何一個函式,但是它需要很多很多的神經元。而深層網路用少得多的神經元就能擬合同樣的函式。也就是為了擬合一個函式,要麼使用一個淺而寬
深層網路也有劣勢,就是它不太容易訓練。簡單的說,你需要大量的資料,很多的技巧才能訓練好一個深層網路。這是個手藝活。
神經元(感知器)
看到這裡,如果你還是一頭霧水,那也是很正常的。為了理解神經網路,我們應該先理解神經網路的組成單元——神經元。神經元也叫做感知器。感知器演算法在上個世紀50-70年代很流行,也成功解決了很多問題。並且,感知器演算法也是非常簡單的。
感知器的定義
下圖是一個感知器:
如果看完上面的公式一下子就暈了,不要緊,我們用一個簡單的例子來幫助理解。
例子:用感知器實現and
函式
我們設計一個感知器,讓它來實現and
運算。程式設計師都知道,and
是一個二元函式(帶有兩個引數x1和x2),下面是它的真值表:
具體說明見
二、兩者的關係
其中有監督的學習可以解決:
有監督的那列屬性來監督這類資料
- 1) 預測:預測股票漲跌,足球輸贏
- 2) 分類:二分類、影象識別
無監督的學習:
根據資料進行猜測,包括
- 1)聚類:根據共性分類
- 2)推薦等
Deep learning,是機器學習裡面現在比較火的一個topic,本身是神經網路演算法的衍生。在影象,語音等富媒體的分類和識別上取得了非常好的效果。深度學習只是機器學習的一個子類,是機器學習一類比較火的演算法,本質上還是原來的神經網路。就是用複雜、龐大的神經網路進行機器學習。