強化學習
強化學習能解決的問題:序貫決策問題
序貫決策問題:連續不斷的作出決策,才能實現最終目標的問題。
強化學習如何解決問題?
類比,強化學習和監督學習的異同點:
共同點:兩者都需要大量的數據進行訓練
不同點:兩者所需的數據類型不同。監督學習需要的是多樣化的標簽數據,強化學習需要的是帶有回報的交互數據。
由於輸入的數據類型不同,這使得強化學習算法有他自己的獲取數據,利用數據的獨特方法。
強化學習的分類:
-
根據是否依賴模型,分為:基於模型和無模型的
-
根據策略的更新,分類:基於值函數的強化學習,基於直接策略的搜索,AC方法(聯合前兩種)
值函數:值函數最大的動作為最策略
直接策略:是將策略參數化,實現目標最優參數
-
根據環境返回的回報函數是否已知,分為正向強化學習和逆向強化學習。回報函數指定的強化學習算法稱為正向強化學習。
機器學習分為監督、無監督和強化學習。
eg:基於深度強化學習的對話生成。
參考《推薦系統與深度學習》2.2.4節
深度學習
-
網絡參數的初始化
深度學習的模型參數都是采用梯度下降算法來更新的,本質上,它是一種迭代更新算法,需要在迭代更新前對每個參數進行初始化。選擇合適的方法初始化網絡參數十分重要。
初始化網絡參數的幾種方法,為如數神經元數量,
為輸出神經元數量。
例如:Relu激活函數,權重的初始化。
鏈接:https://blog.csdn.net/u014157632/article/details/78206970
高斯分布初始化:
均勻分布初始化:
Xavier初始化
-
學習率的選擇
除了網絡參數初始化問題,選擇合適的學習率也十分重要。
1)模擬退火算法
深度網絡通常采用模擬退火算法在訓練期間動態調整學習率。
包括反向衰減學習率和指數衰減學習率:
反向衰減學習率:初始學習率,
為衰減系數,t為迭代次數
指數衰減學習率:
固定衰減的模擬退火方法不能直接泛化到多個數據集上,為了不希望采用相同的評率和步長更新所有的網路參數,可自適應調整學習率Adadelta被提出。
2)動量方法
動量方法采用累計梯度來替代當前時刻的梯度,直觀上說,動量方法類似於把球推下山,球在下坡時積累動力,在途中速度會變得越來越快。動量方法可以快速地收斂並減少目標函數的震盪。
動量參數通常設置成0.9,
是梯度更新的步長。
-
RMsprop
該方法可以自適應調整每個參數的學習率,可以克服學習率過早衰減問題。
是衰減系數,通常為0.9
梯度更新公式:
-
自適應矩估計
該方法可以自適應的調整每個參數的學習率,可以看成是動量方法和RMSprop的結合。
和
分別是梯度一階矩(均值)和二階矩(方差)的估計。
卷積神經網絡
特點:
1)第L+1層神經元和第L層的局部區域相連接,該區域執行卷積操作和非線性變換生成L+1層神經元。
2)整個網絡可以表示成可微分的端到端函數f(x),卷積網絡通過損失函數,比如交叉熵來優化網絡參數。
3)CNN具有更少的參數,可以有效地訓練非常深的架構。
卷積神經網絡的圖層可以分成三種類型、卷積層,池化層和全連接層。
卷積層:
用來提取局部區域的特征。卷積層有多種不同的卷積核,局部區域和這些卷積核經過卷積運算生成不同的特征。不同的卷積核可以看成不同的特征提取器。
池化層:
子采樣層,被用在連接的卷積層之間,類似於特征選擇的功能,其作用是減少特征和參數數量,減少網絡計算量,從而控制過擬合。
池化方式分為:最大池化和平均池化
常見的網絡結構:
LetNet-5,AlexNet,VGGNet,ResNet
循環神經網絡
循環神經網絡是序列模式的一個變體。序列模型包括隱藏狀態,隱藏狀態保存序列在每個時刻的動態性,所以它會根據不同時刻的動態變化預測下一個結果。
RNN的目標函數,通過最大似然或最小化負對數似然估計模型。
-
如果梯度消失,可以采用把RNN的
更新方式改成累加模型。
-
如果帝都爆炸,可以采用梯度截斷來解決。
對於梯度消失和梯度爆炸問題,LSTM可以進行解決。
生成對抗網絡
GAN包括生成器G和判別器D。
模型訓練判別器D以最大化將正確標簽分配給訓練樣本和來自生成器G的樣本的概率。
同時以最小化log(1-D(G(z))為訓練目標,從而得到生成器G。判別器和生成器在博弈一個最大最小問題。
常見的生成對抗網絡:
-
CGAN(conditional GAN),給圖像生成加上額外的條件,改進CycleGAN,DualGAN
-
DCGAN(deep convolutional generative Adversarial Networks)采用深度卷積網絡作為生成器和判別器的基礎組件,改進StackGAN.
-
WGAN(wasserstein距離)
Wasserstein距離作為一種在D區域上兩個概率分布距離的度量,又名Earth-Mover距離,用於衡量兩個分布之間的距離。
WGAN提出新的距離度量函數,使得GAN的穩定性,魯棒性更好。
-
SeqGAN
SeqGAN利用增強學習來解決生成離散數據時不可導的問題,生成器通過生成完整的句子再獲得判別器的獎勵以更新生成器,這種增強學習方式為GAN生成離散文本序列的訓練提供了可能性,使得GAN在NLP上得以應用。
Texygen平台,Pix2pix項目。
常見的深度學習框架
TensorFlow:谷歌開發,人工智能學習系統
Keras;極簡主義
Caffe:計算機視覺
Theano:適合數值計算優化
MXNet:亞馬遜開發
Torch:Facebook,lua編程
pyTorch:動態圖模型,caffz並入
DL4J:支持Java,Scala
Cognitive-toolkit:微軟開發
Lasagne:在Theano基礎上開發
DSSTNE:致力於推薦系統框架
ONNX(open neural network exchange)開源人工智能項目
TensorFlow
"Tensor"(張量)意味着N維數組
"Flow"(流)意味着數據流圖的計算
TensorFlow為張量從數據流圖的一端流動到另一端的計算過程。
TensorFlow中用於構建計算的方式是數據流圖。數據流圖由節點和邊組成,其中,節點代表數值操作(比如加法,乘法,卷積和池化),邊代表流動的張量。一次計算由輸入節點開始,產生的張量在圖中流動,經過不同操作節點時進行各種數值計算,最后產生張量結果輸出。
TensorFlow是將復雜的數據結果傳輸至人工智能神經網絡中進行分析和處理的系統。
TensorFlow不是一個嚴格的神經網絡庫,只要你可以將計算表示為數據流圖,就可以使用Tensorflow。你通過構建圖,描寫驅動計算的內部循環,Tensorflow就可以提供有用的工具幫你組裝子圖,當然用戶也可以在Tensorflow上寫自己的上層庫。