【BitTiger讀書會(huì)簡(jiǎn)介】
BitTiger讀書會(huì),以書會(huì)友。以報(bào)告方式,加強(qiáng)組織表達(dá)力听怕;以討論方式,激蕩思考判斷力虑绵,期能擴(kuò)充知識(shí)領(lǐng)域尿瞭,養(yǎng)成讀書習(xí)慣。
每周一本好書翅睛,一年閱讀50本書声搁,集眾智,挑好書捕发,留精華內(nèi)容疏旨,創(chuàng)優(yōu)質(zhì)社群。
BitTiger讀書會(huì)扎酷,歡迎您的加入檐涝!
在上一期的活動(dòng)中,盧開顏和我們一起分享了《像外行一樣思考法挨,像專家一樣實(shí)踐——科研成功之道》這本書谁榜。在即將到來(lái)的第十四期中,我們將與Li Yuhan一起讀《Fundamentals of Deep Learning 》(深度學(xué)習(xí)基礎(chǔ))這本書凡纳,感受深度學(xué)習(xí)的魅力窃植。
【分享書籍】
【書籍介紹】
隨著2000年以來(lái)神經(jīng)網(wǎng)絡(luò)的重新振作,深度學(xué)習(xí)成為一個(gè)非臣雒樱活躍的研究領(lǐng)域巷怜,并且為現(xiàn)代機(jī)器學(xué)習(xí)鋪平了道路。本書實(shí)用性很強(qiáng)暴氏,作者提供了很多實(shí)例以及清晰的解釋延塑,以幫助讀者領(lǐng)會(huì)這個(gè)復(fù)雜領(lǐng)域中的基本概念。
【嘉賓介紹】
Li Yuhan答渔, 現(xiàn)就職于某跨國(guó)投資銀行任軟件工程師关带。
【電子書下載】
FundamentalofDeepLearningNotes
【加入讀書會(huì)】
獲取BitTiger讀書會(huì)系列讀書分享信息,請(qǐng)?zhí)砑游⑿臝D: saraincs研儒,備注“讀書”加入BitTiger讀書會(huì)活動(dòng)群
【分享文稿】
Fundamentals of Deep Learning
作者介紹:
Nikhil Buduma: confounder and chief scientist at Remedy. Attended MIT
Nick Locascio: deep learning consultant for Fortune-500 corps. Attended MIT
本書簡(jiǎn)介:
隨著2000年以來(lái)神經(jīng)網(wǎng)絡(luò)的重新振作豫缨,深度學(xué)習(xí)成為一個(gè)非常活躍的研究領(lǐng)域端朵,并且為現(xiàn)代機(jī)器學(xué)習(xí)鋪平了道路好芭。本書實(shí)用性很強(qiáng),作者提供了很多實(shí)例以及清晰的解釋冲呢,以幫助讀者領(lǐng)會(huì)這個(gè)復(fù)雜領(lǐng)域中的基本概念舍败。
本書大概內(nèi)容:
介紹機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的基本概念。
學(xué)習(xí)如何訓(xùn)練feed-forward神經(jīng)網(wǎng)絡(luò)
運(yùn)用TensorFlow建立一個(gè)神經(jīng)網(wǎng)絡(luò)
建立神經(jīng)網(wǎng)絡(luò)來(lái)分析復(fù)雜圖像
運(yùn)用自編碼器
對(duì)語(yǔ)言的序列分析
深度強(qiáng)化學(xué)習(xí)的基本知識(shí)
Prerequisites:
基本的積分敬拓,矩陣和Python 編程知識(shí)邻薯,線性代數(shù)
代碼:https://github.com/darksigma/Fundamentals-of-Deep-Learning-Book
第一章 神經(jīng)網(wǎng)絡(luò)
傳統(tǒng)計(jì)算機(jī)在行的兩件事:1. 數(shù)學(xué)計(jì)算 ; 2. 遵循指令
但是如何讓計(jì)算機(jī)識(shí)別手寫數(shù)字乘凸?
如何讓計(jì)算機(jī)識(shí)別下圖是6還是0厕诡?
很多類似的識(shí)別問(wèn)題都?xì)w類于object recognition, , 語(yǔ)音識(shí)別,自動(dòng)翻譯等等营勤。
回顧一下人類學(xué)習(xí)的歷史: 我們小時(shí)候認(rèn)識(shí)小狗并不是通過(guò)去測(cè)量小狗的鼻子或外形來(lái)確定這個(gè)物體是小狗灵嫌,而是通過(guò)很多實(shí)例并不斷被糾正來(lái)最終認(rèn)識(shí)小狗。我們的大腦建立一個(gè)模型葛作,這個(gè)模型在我們成長(zhǎng)中不斷take我們感官的輸入寿羞,然后做猜測(cè);如果猜測(cè)被父母證實(shí)了赂蠢,那么模型被加強(qiáng)绪穆。
Deep Learning是machine learning的一個(gè)subset。 Machine learning里虱岂,我們不給計(jì)算機(jī)大量的rules來(lái)識(shí)別玖院,而是通過(guò)給一個(gè)可以評(píng)估實(shí)例的模型,遇到錯(cuò)誤判斷的時(shí)候用一個(gè)small set of 指令去修改模型第岖, 然后經(jīng)過(guò)時(shí)間司恳,這個(gè)模型能夠精準(zhǔn)的解決問(wèn)題。
如果用公式來(lái)表達(dá):
a function h (x, θ) x: 向量
問(wèn)題來(lái)了:為什么deep learning或者machine learning里我們要用到矩陣绍傲,線性代數(shù)扔傅,數(shù)理統(tǒng)計(jì)這些?烫饼?尤其是矩陣運(yùn)算猎塞?為什么?杠纵?
概念:linear perceptron
神經(jīng)元:一粒米大小的腦組織包含超過(guò)10000個(gè)神經(jīng)元荠耽。
生物神經(jīng)元結(jié)構(gòu)圖:(科學(xué)家們由此得到機(jī)器學(xué)習(xí)的啟發(fā))
1943年提出的人工神經(jīng)網(wǎng)絡(luò)模型:
vector x = [x1 x2 … xn] : 輸入
w = [w1 w2 … wn]: 加權(quán)值
y = f (x?w)+ b , b: 偏差
思路重點(diǎn):神經(jīng)元的活動(dòng)是一系列矩陣操作。
Feed-Forward 神經(jīng)元網(wǎng)絡(luò)
特點(diǎn):
同層之間沒(méi)有神經(jīng)元鏈接比藻。低層向高層鏈接铝量。每層不一定要有相同數(shù)目的神經(jīng)元倘屹。輸入和輸出都用矢量來(lái)表示。Hidden layer常常比輸入層的神經(jīng)元要少慢叨。
第二章 訓(xùn)練Feed-Forward神經(jīng)網(wǎng)絡(luò)
問(wèn)題: 我們?nèi)绾蝸?lái)確定參數(shù)纽匙,以及參數(shù)的加權(quán)值?
回答:通過(guò)“訓(xùn)練” (training)
給神經(jīng)網(wǎng)絡(luò)大量的訓(xùn)練實(shí)例拍谐,循環(huán)性的修改加權(quán)值以最小化錯(cuò)誤烛缔。
例子:
任務(wù):通過(guò)一個(gè)模型確定一頓飯要花多少錢。
輸入變量:每頓飯包括漢堡轩拨,薯?xiàng)l和蘇打水践瓷,每頓飯的總價(jià)格
目標(biāo):我們希望給模型輸入足夠的例子后,模型能預(yù)測(cè)每頓飯的價(jià)格亡蓉。
如何評(píng)價(jià)模型:
t(i): 真實(shí)的答案晕翠,y(i): 神經(jīng)網(wǎng)絡(luò)產(chǎn)生的值,E越小越好砍濒,當(dāng)E=0的時(shí)候崖面,模型產(chǎn)生精準(zhǔn)的預(yù)測(cè)。
梯度下降 (Gradient Descent)
模型所需的數(shù)據(jù):
第三章 神經(jīng)網(wǎng)絡(luò)在TensorFlow里的運(yùn)用
什么是TensorFlow?
Google 2015年發(fā)布的Python深度學(xué)習(xí)開源庫(kù)梯影。
TensorFlow與其他開源庫(kù)的比較
Theano: University of Montreal. 需要搭建特殊的深度學(xué)習(xí)架構(gòu)巫员。比較復(fù)雜。主要面向research
Torch: Facebook AI Research, written in Lua甲棍。語(yǔ)言不夠popular简识,對(duì)于初學(xué)者來(lái)說(shuō)有一定難度。
TensorFlow:Python感猛, interface干凈簡(jiǎn)潔易懂七扰,面向production。
接下來(lái)講如何安裝TensorFlow陪白。
裝完之后颈走,建立TensorFlow的變量。這些變量用于建立模型咱士。這些變量是in-memory buffers, 包含tensors, 必須在圖第一次調(diào)用之前顯式初始化立由。每次迭代后我們可以使用梯度方法去修改變量。我們可以把變量的值存到disk上以便以后使用序厉。
例子:
weights = tf.Variable(tf.random_normal([300, 200], stddev=0.5),
name=“weights”)
tf.random_normal: 用正態(tài)分布初始化一個(gè)tensor
stddev=0.5: 標(biāo)準(zhǔn)偏差0.5
300X200:連接1層300 個(gè)神經(jīng)元到1層200個(gè)神經(jīng)元
Name=”weights”: unique identifier
建議一個(gè)不可訓(xùn)練的變量:
weights = tf.Variable(tf.random_normal([300, 200], stddev=0.5),
name=“weights”, trainable=False)
初始化一個(gè)變量的3個(gè)操作:
tf.initialize_all_variables(),會(huì)觸發(fā)所有 tf.assign 的操作.
TensorBoard:圖像化锐膜,可用于debugging
本章總結(jié):主要介紹了如何安裝TensorFlow, 舉例說(shuō)明了如果建立變量模型,以及multiple layers. 還介紹了如果enable GPU弛房, CPU計(jì)算道盏。
第四章 梯度下降
全局最小點(diǎn)
局部最小點(diǎn)
AdaGrad 算法:積累歷史梯度。 在凸優(yōu)化背景中,AdaGrad算法具有一些令人滿意的理論性質(zhì)荷逞。
RMSProp算法:修改AdaGrad以在非凸設(shè)定下效果更好媒咳,改變梯度積累為指數(shù)加權(quán)的移動(dòng)平均。目前是深度學(xué)習(xí)從業(yè)者經(jīng)常采用的優(yōu)化方法之一种远。
Adam:另一種學(xué)習(xí)率自適應(yīng)優(yōu)化算法涩澡。可看作RMSProp和動(dòng)量結(jié)合的變種院促。
第五章 卷積神經(jīng)網(wǎng)絡(luò)
如何讓計(jì)算機(jī)識(shí)別一張人臉?傳統(tǒng)方法靠像素識(shí)別行不通斧抱。
ImageNet比賽中常拓,Alex Krizhevsky 靠卷積神經(jīng)網(wǎng)絡(luò)取得了優(yōu)異的成績(jī)。
卷積網(wǎng)絡(luò)是一種專門用來(lái)處理具有類似網(wǎng)絡(luò)結(jié)構(gòu)的數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)辉浦。例如時(shí)間序列數(shù)據(jù)和圖像數(shù)據(jù)弄抬。卷積是一種特殊的線性運(yùn)算。
卷積運(yùn)算通過(guò)三個(gè)重要的思想來(lái)幫助改進(jìn)機(jī)器學(xué)習(xí)系統(tǒng): 稀疏交互宪郊,參數(shù)共享掂恕,等變表示。
稀疏交互:例如處理圖像時(shí)弛槐,輸入的圖像可能包含成千上萬(wàn)個(gè)像素點(diǎn)懊亡,但是我們可以通過(guò)只占用幾十到上百個(gè)像素點(diǎn)的kernel來(lái)檢測(cè)一些小的有意思的特征,例如圖像的邊緣乎串。
參數(shù)共享:在一個(gè)模型的多個(gè)函數(shù)中使用相同的參數(shù)店枣。
本章末,作者舉了一個(gè)實(shí)例:對(duì)一個(gè)32X32像素的小狗圖像運(yùn)用卷積網(wǎng)絡(luò)來(lái)做識(shí)別叹誉。值得自己試試鸯两。
第六章 嵌入的表示學(xué)習(xí)
表示學(xué)習(xí):有很多任務(wù),我們很難知道提取哪些特征长豁。解決這個(gè)問(wèn)題的途徑之一就是使用機(jī)器學(xué)習(xí)來(lái)發(fā)掘表示本身钧唐,而不僅僅把表示映射到輸出。表示學(xué)習(xí)算法只需要幾分鐘就可以為簡(jiǎn)單的任務(wù)發(fā)現(xiàn)一個(gè)很好的特征集匠襟。手動(dòng)為一個(gè)復(fù)雜的任務(wù)設(shè)計(jì)特征需要耗費(fèi)大量的人工時(shí)間和精力钝侠。
表示學(xué)習(xí)算法的典型例子是自編碼器。自編碼器是由一個(gè)編碼器函數(shù)個(gè)一個(gè)解碼器函數(shù)組合而成酸舍。編碼器函數(shù)將輸入數(shù)據(jù)轉(zhuǎn)換成一種不同的表示机错,解碼函數(shù)將這個(gè)新的表示轉(zhuǎn)換到原來(lái)的形式。
一個(gè)好的自編碼器:輸入數(shù)據(jù)結(jié)果編碼器和解碼器后能保留盡可能多的信息父腕,同時(shí)希望新的表示有各種好的特性弱匪。
降噪自動(dòng)編碼器:接受損壞數(shù)據(jù)作為輸入,并訓(xùn)練來(lái)預(yù)測(cè)原始末被損壞數(shù)據(jù)作為輸出的自編碼器。
傳統(tǒng)的自編碼器最小化以下目標(biāo):
降噪自編碼器最小化 是被某種噪聲損壞的x 副本萧诫。因此降噪自編碼器必須撤銷這些損壞斥难,而不是簡(jiǎn)單地復(fù)制輸入。
可解釋性:機(jī)器學(xué)習(xí)模型的一個(gè)重要特性
本章末用word2Vec Framework 結(jié)合TensorFlow舉例說(shuō)明了Skip-Gram模型帘饶。
第七章 序列分析模型
RNN: Recurrent neural network 循環(huán)神經(jīng)網(wǎng)絡(luò)哑诊,是一類用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)。循環(huán)layer包含循環(huán)鏈接及刻,也就是說(shuō)镀裤,神經(jīng)元之間的鏈接在同一layer里。
循壞神經(jīng)網(wǎng)絡(luò)中一些重要的設(shè)計(jì)模式:
每個(gè)時(shí)間步都有輸出缴饭,并且隱藏單元之間有循環(huán)鏈接的循環(huán)網(wǎng)絡(luò)
每個(gè)時(shí)間步都產(chǎn)生一個(gè)輸出暑劝,只有當(dāng)前時(shí)刻的輸出到下個(gè)時(shí)刻的隱藏單元之間有循環(huán)鏈接的循環(huán)網(wǎng)絡(luò)
隱藏單元之間存在循環(huán)鏈接,但讀取整個(gè)序列后產(chǎn)生單個(gè)輸出的循環(huán)網(wǎng)絡(luò)
第八章 記憶神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)圖靈機(jī): Neural Turing Machine, or NTM, 2014 年Graves提出一種新的神經(jīng)架構(gòu)颗搂,包含了controller neural network (通常是RNN)和外部存儲(chǔ)器担猛,相當(dāng)于人腦工作記憶。下圖顯示了當(dāng)前的計(jì)算機(jī)結(jié)構(gòu)和NTM的架構(gòu)對(duì)比丢氢。左邊是計(jì)算機(jī)架構(gòu)傅联,右邊是NTM。
DNC: Differentiable neural computer, 改善NTM疚察。 與NTM相似蒸走,DNC包括一個(gè)controller,還有外部存儲(chǔ)貌嫡。 外部存儲(chǔ)包括N words of size W, M=N x W载碌。
第九章 深度強(qiáng)化學(xué)習(xí)
DQN:Deep Q-Network 是第一個(gè)large-scale 成功的加強(qiáng)學(xué)習(xí)的application.
強(qiáng)化學(xué)習(xí)的構(gòu)架:包括一個(gè)環(huán)境,一個(gè)actor衅枫, 一個(gè)反饋信號(hào)嫁艇。Actor選擇在環(huán)境中take an action, 如何選擇action – 根據(jù)policy。
馬爾可夫決策過(guò)程 (Markov Decision Processes MDP)
S: 有限的可能狀態(tài)集合
A: 有限的actions集合
P (r, s|′ s, a):狀態(tài)轉(zhuǎn)移方程
R:反饋函數(shù)
例子:藍(lán)色圓圈:環(huán)境中的狀態(tài)弦撩;紅色方塊:actions步咪。藍(lán)線:狀態(tài)轉(zhuǎn)移。藍(lán)線上的數(shù)字:轉(zhuǎn)移的概率益楼。綠線數(shù)字: reward猾漫。
Deep Recurrent Q-Networks (DRQN)
Asynchronous advantage actor-critic (A3C): 2016年提出的對(duì)深度強(qiáng)化學(xué)習(xí)的新的方法。
UNsupervised REinforcement and Auxiliary Learning (UNREAL): 對(duì)A3C 的一個(gè)改進(jìn)感凤。