---
# System prepended metadata

title: self_attention and transformer

---

# self_attention and transformer 
## 問題
在這個問題中我們需要思考的是如果輸入是一堆向量且這些向量彼此可能都有關係的話要怎麼處理(像一句話 一張圖等)
## 方法
為了考慮不同的vector之間可能有關連，因此我們可以先算出不同向量間的相關性，簡單的做法可以先讓vector乘上矩陣後再互相內積，作為相關性，然後再用另外一個矩陣乘上原本的vector，再乘與矩陣最後乘與相關性，最終把整個東西變為一個vector。
## 作業4
用了conformer架構，概念就是在transformer中加入convolution layer，在作業中也有推薦用到self_attention_pooling ，就是在pooling時先將vector乘一矩陣再與自己內積。另外一個推薦是Additive Margin Softmax for Face Verification，其目標是降低同個類別間的距離([論文](https://arxiv.org/pdf/1801.05599.pdf))
## transformer
![](https://i.imgur.com/fzbeRtT.png)
在圖中可以看到他分為兩部分，一個是encoder而另一個是decoder，encoder就和前面提到的self attention一樣，而decoder特別的地方是它下面有masked-multi-head attention，decoder一次只會輸出一個東西，然後他們會一個一個丟進ecnoder再產生下一個東西，因為attention只能顧及前面先被output出來的，看不到後面的
## 作業5
他有幾個tips，
1. label smoothing:讓trainging的答案不要是one hot，讓其它結果也有一些機率，減少overfitting的機率
2. learning rate scheduling
3. back translation:我們任務是將英文翻成中文，但我們可能能夠收集到比較多的中文資料，因此我們先用有英文中文pair的資料來訓練一個中翻英的機器，之後再把沒有pair的中文丟進去，得到更多中英pair的資料，再train英到中的模型
不知道最後為甚麼沒有成功跑起來