以往我們的Training當中,在通過model輸出一組Y時,都會有參考比較的label Y',來得知model預測的值與實際值的差距,這被稱為supervised learning。
那在沒有參考的label存在,我們又需要訓練時,就可以使用self-supervised的方式訓練。
訓練方式:
*self-supervised算是unsupervised的其中一種訓練方法。
我們可以使用BERT做Masking Input舉例:
那其實將BERT進行Masking Input填空題的過程,其實就是在做pre-train。
神奇的是,之後只要再搭配需要進行任務的label調整(fine-tune),就能進行其他種與填空題無關的任務(downstream)。
Fine-Tune實例1-判斷句子本身是正面還負面
*CLS是特殊符號,與原有的句子無關,目標是讓CLS再經過Linear之後可以判斷是正面還是負面。
為甚麼BERT訓練方式有用?
因為BERT本身就是Transformer,在透過填空題Pre-trained之後,學會觀察輸入的sequence文字的上下文關係。
訓練的結果就能判斷其分別,像是輸入文字,”吃蘋果”與”蘋果電腦”,”蘋”這個字從BERT中就會輸出不同的向量,因為它能夠透過上下文判定”蘋”這個字的意涵不同。
→ 但這部分還需要考證,到底是為甚麼有用。
那另外一個大型模型就是GPT,它的原理就是想辦法透過前一個字的輸出預測下一個token。
假設我們要輸入的是"台灣大學”
實例:假設我們要GPT進行翻譯,我們可以使用In-context Learning
我們可以透過即時的交代我們要的核心主題讓GPT進行訓練。
接著給它一些實際的例子,再請他依樣畫葫蘆,翻譯我們要的問題。
(這一點應該可以套用在chat-GPT上?!)
*Few-shot: 給它幾個例子
*one-shot: 只給他一個例子
*zero-shot: 不給它例子
那以上就是簡單介紹的self-supervised learning大型模型BERT, GPT。