如何應?和激發?語?模型的各??能?
提示?程 Prompt engineering
- 通過輸?更加合理的提示,引導模型進?更有效的結果輸出,本質上是?種引導和激發模型能?的?法
- 更加輕量級的引導?法,嘗試和實施的?檻更低;問題是受限于模型最?對話上下?限制,提示量有限
微調 Fine tuning
- 通過輸?額外的樣本,對模型部分參數進?修改,從?強化模型某部分能?;本質上也是?種引導和激發模型能?的?法
- 需要重新訓練模型部分參數,訓練成本較?,且需要精?準備數據,技術實施難度也更?;優勢是可以讓模型永久的強化某??能?;
提示?程和微調的技術關系?
- 能?提示?程解決的問題,往往不會?微調;?也有很多微調才能夠解決的問題;
- 更多的時候是作為上下游技術關系,例如要進?本地知識庫的定制化問答,最好的?法就是借助提示?程進?數據標注,然后再利?標注好的數據進?微調
提示?程三??核?技術
- 提示詞模板設計:相當于是魔法語句,在輸?了某些語句之后,模型能夠更好的完成任務,例如“請?步步進?思考”;
- 提示示例設計:?前較為流?的提示示例設計是不僅包括問答內容,同時包括推理和解決問題的步驟,從?能夠給予模型更好的引導;
- 提示流程設計:很多時候模型?法?步到位解決問題,此時就需要設計更加復雜的提示流程,來引導模型通過多步的提示來解決問題
One-shot & Few-shot提示學習法
輸入一些類似問題和問題答案,讓模型參考學習,并在同一個prompt的末尾提出新的問題,依次提升模型的推理能力。
示例:
prompt_Few_shot1 = 'Q:“羅杰有五個網球,他又買了兩盒網球,每盒有3個網球,請問他現在總共有多少個網球?” \A:“現在羅杰總共有11個網球。” \Q:“食堂總共有23個蘋果,如果他們用掉20個蘋果,然后又買了6個蘋果,請問現在食堂總共有多少個蘋果?” \A:'
prompt_Few_shot1
通過思維鏈提示法提升模型推理能力
Zero-shot-CoT提示方法
最為簡單的思維鏈的實現方法是在提示詞尾部追加一句“Let’s think step by step”(請一步步進行推理并得出結論),即可大幅提高模型推理能力
Few-shot-CoT提示方法
Few-shot,Few-shot-CoT的不同之處只是在于需要在提示樣本中不僅給出問題的答案、還同時需要給出問題推導的過程(即思維鏈),從而讓模型學到思維鏈的推導過程,并將其應用到新的問題中
示例
'Q:“羅杰有五個網球,他又買了兩盒網球,每盒有3個網球,請問他現在總共有多少個網球?” \
A:“羅杰一開始有五個網球,又購買了兩盒網球,每盒3個,共購買了6個網球,因此現在總共由5+6=11個網球。因此答案是11。” '
CoT改良方法:LEAST-TO-MOST PROMPTING(LtM提示法)
解決CoT提示方法泛化能力不足的問題——即通過人工編寫的思維鏈提示樣本可能并不能夠很好的遷移到別的問題當中去,換而言之,就是解決問題的流程遷移能力不足,即泛化能力不夠。而這種泛化能力不足則會導致“新的問題”無法使用“老的模板”進行解決。?
?該方法先通過提示過程讓模型找到解決該問題必須要分步解決哪幾個問題,然后再通過依次解決這些問題來解決最原始的問題。
整個提示過程會分為兩個階段進行,第一個階段是自上而下的分解問題(Decompose Question into subquestion),第二個階段是自下而上的依次解決問題(Sequentially Solve Subquestion),而整個依次回答問題的過程,其實就可以看成是CoT的過程,只不過LtM會要求模型根據每個不同的問題,單獨生成解決問題的鏈路,以此做到解決問題流程的“千人千面”,從而能夠更加精準的解決復雜推理問題。而整個過程問題的由少變多,則是LEAST-TO-MOST一詞的來源。
prompt_Zero_shot_MtL1 = 'Q:“羅杰有五個網球,他又買了兩盒網球,每盒有3個網球,請問他現在總共有多少個網球?”\A:為了解決“羅杰總共又多少個網球?”這個問題,我們首先要解決的問題是'
prompt_Zero_shot_MtL1