image.png
如上圖所示珍手,ChatGPT 并不是直接讓人工去標注每一句話的真實得分是多少(盡管模型最終要預(yù)測的就是每句話的得分),而是讓人去對 4 句話按照好壞程度進行「排序」罐栈。
通過這個「排序序列」黍衙,模型將會學(xué)習(xí)如何為每一個句子進行打分,用「相對任務(wù)」替代「絕對任務(wù)」能夠更方便標注員打出統(tǒng)一的標注結(jié)果荠诬。
Rank Loss
假定現(xiàn)在有一個排好的序列:A > B > C >D。
我們需要訓(xùn)練一個打分模型位仁,模型給四句話打出來的分要滿足 r(A) > r(B) > r(C) > r(D)柑贞。
那么,我們可以使用下面這個損失函數(shù):
image.png
其中聂抢,yw 代表排序排在 yl 的所有句子钧嘶。
用上述例子(A > B > C > D)來講,loss 應(yīng)該等于:
loss = r(A) - r(B) + r(A) - r(C) + r(A) - r(D) + r(B) - r(C) + ... + r(C) - r(D)
loss = -loss
為了更好的歸一化差值琳疏,我們對每兩項差值都過一個 sigmoid 函數(shù)將值拉到 0 ~ 1 之間有决。
可以看到,loss 的值等于排序列表中所有「排在前面項的reward」減去「排在后面項的reward」的和空盼。
而我們希望模型能夠「最大化」這個「好句子得分」和「壞句子得分」差值书幕,而梯度下降是做的「最小化」操作。
因此揽趾,我們需要對 loss 取負數(shù)台汇,就能實現(xiàn)「最大化差值」的效果了。