---
# System prepended metadata

title: 最新深度學習研究進展
tags: [機器學習]

---

# 最新深度學習研究進展
###### 2021 陽明交大資訊人才培訓 by Ivor Chu
###### tags: `機器學習`

注意力機制
---
**注意力機制**
人在看東西時會有個視覺注意區，而人若擁有較小的注意力範圍可以減少認知負載，並且一次只專心處理一小塊資料，換句話說你在看東西時會偏重於某些地方，而視覺區透過移動到一個一個區塊來對整個場景做一個認知。下圖為一篇google發表的研究，透過RNN可以達到圖像的產生，一開始模型的注意力從較廣的區塊逐漸聚集到圖形上的一點，再開始下筆並沿著圖形走過一遍。
![](https://i.imgur.com/maZDdOi.jpg)

**序列注意力**
在深度學習中，當我們要把一個序列轉換成另一個序列時，用RNN時編碼器是將一個句子的資訊抽出來，再把這些資訊丟入一個解碼器並產生一堆新的句子(向量)，但這個步驟對於解碼器來說太困難了，這就像每次翻譯時都要把整句話背下來，一整句話都會嵌入在這個向量中。這時注意力機制可以讓解碼器在每一個時間點都能往前去看編碼器的所有訊息，每一次傳入解碼器的向量，也就是到目前為止這個句子的意義是什麼，不再是只有上一個時間點產生出來的字，而是會包含過去的編碼器所有資訊，這大幅的增加了模型的記憶性。
![](https://i.imgur.com/XJKDppX.png)

**機器翻譯**
假設今天有個機器翻譯的問題，在每一個時間點都會流入所有編碼器的資訊，但解碼器只會將注意力放在跟他最相關的幾個字上(時間點最靠近)，這時就可以將字和字建力強弱關係，進而來表達在每個時間點注意力的強弱。在每個時間點選擇對自己最有用的資訊以達到注意力轉移，而如何去選擇哪些資訊屬於有用的資訊就可以讓神經網路去學習。原本的問題是給神經網路的資訊太少了，但又怕給神經網路太多負擔，這時就可以給注意力機制選擇要用的資訊。
![](https://i.imgur.com/IumkNFY.png)


生成式模型
---
**生成式模型**
生成式模型本質上是一種了解世界的方法，若你生成出來的東西是和這個世界相容的，某種程度上可以說是了解這個世界的運作規則。從另一個角度來看可以說是一個working model，也就是瞭解了一些這個世界部分的結構，而這個結構可以模擬出這個世界的一些模式，例如我們都知道球會往下掉，所以今天我們把一顆球放在斜坡上，就可以想像球會往下滾，又或是我們都知道一隻狗長怎樣，因此我們可以想像出一隻狗的模樣，雖然他有可能不存在於這的世界上，但你可以模擬出來。同時，生成式模型也需要能評估這個東西可不可能發生，因為這樣才可以知道它創造出來的東西存不存在於這個世界，這通常是以機率來表示。

**Maximum Likelihood**
生成式模型在數學上是在討論模型在看到資料時，判斷此筆資料出現的機率。下圖中的藍點代表著真實資料，而這些資料在餵進去這個機率模型時會把他出現的可能推高，某些真實資料出現的越頻繁代表他出現的機率越高，目的是為了讓模型在餵進不是真實資料時有很高的機率不會受騙。
![](https://i.imgur.com/jhePiZ7.png)

**Fully-observed model - PixelCNN**
一張影像相鄰的像素應該要很像，就像天空藍旁邊理論上應該也會是藍色，因此我們就可以很輕易的預測每個像素相鄰的像素，基於這個思想，當我們想要預測某個像素的顏色，我們可以建一個模型來表示這個像素跟過去的所有像素有關，換句話說我們可以想像成把RNN轉換成CNN來做，並把kernel設計成每一次做摺積時都和未來沒有關係。這件事可以做到刀我們把一張照片削掉一半，他可以把剩下的照片補回來。
![](https://i.imgur.com/HiqiNpa.png)
![](https://i.imgur.com/XXzXTZW.jpg)

**Latent variable model - Variational Autoencoder**
假設今天有一個過於複雜的機率模型，根本沒辦法用一個數學式子寫出來，但我又要抽樣他，這時就可以找出另一個可以控制、抽樣、並用數學是寫出來的機率分佈，而這個機率分佈需要與真實機率分佈越像越好，這件事情就是Variational Inference，當我們把他放入autoencoder的神經網路架構上，我們隨便抽樣就可以生成出和真實模型類似的資料。如下圖，假設表徵分佈Z長得很像常態分佈，這時就可以用比較好控制的常態分佈來隨機抽樣，就可以生成出類似真實影像的畫面。
![](https://i.imgur.com/F3ApfZW.png)

**Transformation model - Generative Adversarial Network**
GAN的結構分成Generator和Discriminator。Generator可以想像成給你一個低維度的東西，你要把它變成一個高維度的東西，類似無中生有，而Discriminator可以想像成判斷生成出來的東西真不真實。如下圖，假設給予一個Z空間，透過一個generative model產生了一張影像，而產生出來的影像會透過一個真實分佈來做比對，因為生成的影像空間中只有某些部分才屬於真實資料的地方(一個區域裡充滿真實資料)，也就是說在這高維的空間中只有某些小小的區域是真實資料所存在的，其他地方都不存在，而透過真實分佈比對可以把真實資料的邊界標出來，生產出來的影像空間就要盡可能地往這個邊界裡面擠，這樣生產出來的資料才會越來越像真實資料，因此整個訓練的過程是在做一個對抗，就好比一名做偽鈔的小偷與一名警察，做偽鈔的小偷做了偽鈔後警察就要判斷他是不是偽鈔，當這名小偷越做越好並騙過了警察，代表這偽鈔是真的非常像真鈔，但同時警察也會精進他識別偽鈔的技術，在這你來我往之後，小偷做出來的偽鈔就會越來越像真鈔，而這本質上就是GAN的概念。
![](https://i.imgur.com/zTDVOlp.png)
![](https://i.imgur.com/MFPfbeh.png)

下圖為GAN的示意圖，一剛開始藍線是真實分佈而綠線是生成資料，在第二張圖中藍線告訴綠線過了某點後就不是真實資料，那綠線就會開始往藍線靠，到最後藍線已經畫不出邊界了，因為綠線和資料都幾乎一樣。
![](https://i.imgur.com/mHcS0El.png)


增強式學習
---
**增強式學習**
增強式學習是個媒介與環境之間互動的過程，而這互動的過程會獲得一些獎勵，並且要讓這些獎勵累積起來達到最高，所以他就要做一系列的決策，而且還不一定可以馬上知道這個決策好不好，就像騎腳踏車，你多踩一點也沒有人會告訴你這樣做好不好，你就只能看最後你會不會摔倒而已，他是介於監督式學習與非監督式學習中間，不會立即給你回饋但又不會不給你回饋。

**深度學習應用**
在深度學習中，假設給神經網路玩一個遊戲，在每一個場景中要決定一個動作，而這個動作很有可能是一系列很複雜的函數，深度學習就很適合用來處理這個問題。增強式學習在深度學習中有兩個方法，一個是策略，另一個是價值函數。策略就是將一個狀態轉換成一個動作，我看到了什麼樣的場景我就做出什麼樣的動作，當我們用深度學習來處理他時，就會運用Deep Policy Gradient，也就是讓一個策略(神經網路)玩到底，再看他的獎勵高不高，並針對獎勵直接做梯度下降。
![](https://i.imgur.com/SLc8SJH.jpg)

價值函數是找出一個Q函數，在每個時間都會給予一個狀態和一個動作，經過這個Q函數會告訴你這樣做好不好，今天給予一個狀態，會考慮所有可能的動作來求出獎勵最高的動作，而深度學習就是用來學習這個Q函數。很多電影情節裡面會討論人工智慧可能會抵抗人類，但在人工智慧學習的過程可以加入人為回饋，就好比當電腦在玩賽車遊戲時，超車雖然可以讓電腦比較高分贏得遊戲，但若人為規定電腦不可以超車，超車就給予負分，那超車這個行為就會減少，甚至學不到，這樣在學習的過程中就可以學習到人比較喜歡的樣子。
![](https://i.imgur.com/bTqG3of.png)


其他筆記
---
* [人工智慧與機器學習](https://hackmd.io/@ivorchu/BkCeyJydd)
* [深度學習](https://hackmd.io/@ivorchu/rJ3DPsgud)
* [卷積神經網路](https://hackmd.io/@ivorchu/SkIIoLkOu)
* [遞迴神經網路](https://hackmd.io/@ivorchu/Hkoaoildu)
* [最新深度學習研究進展](https://hackmd.io/@ivorchu/SJLdGwPuO)