Увод
Велики језички модели (ЛЛМ) су последњих година направили револуцију у области обраде природног језика (НЛП). Ови модели су постигли врхунске резултате у различитим НЛП задацима, укључујући превод језика, сумирање текста и одговарање на питања. Међутим, прави потенцијал ЛЛМ-а лежи у њиховој способности да образложе и разумеју сложене односе између концепата. У овом чланку ћемо се упустити у напредак у ЛЛМ размишљању, истражујући основне технике, архитектуре и изазове.
Позадина
ЛЛМ су врста неуронске мреже која се обучава на огромним количинама текстуалних података како би научила обрасце и односе између речи и појмова. Ови модели се обично састоје од енкодера и декодера, где енкодер обрађује улазни текст, а декодер генерише излазни текст. Кодер је обично архитектура заснована на трансформатору, која је посебно погодна за секвенцијалне податке као што је текст.
Архитектура трансформатора
Архитектура трансформатора, представљена у раду "Пажња је све што вам треба" од стране Васванија ет ал. (2017), постао је де фацто стандард за ЛЛМ. Трансформатор се састоји од енкодера и декодера, од којих се сваки састоји од више слојева. Сваки слој се састоји од два подслоја: механизма самопажње и потпуно повезане мреже за прослеђивање протока (ФФНН).
увозна бакља
увези бакљу.нн као нн
цласс ТрансформерЛаиер(нн.Модуле):
деф __инит__(селф, д_модел, н_хеадс, д_фф):
супер(ТрансформерЛаиер, селф).__инит__()
селф.селф_аттн = нн.МултиХеадАттентион(д_модел, н_хеадс)
селф.ффнн = нн.Линеар(д_модел, д_фф)
селф.дропоут = нн.Дропоут(0.1)
селф.лаиер_норм = нн.ЛаиерНорм(д_модел)
деф напред(селф, к):
# Механизам самопажње
к_аттн = селф.селф_аттн(к, к)
к_аттн = селф.дропоут(к_аттн)
к_аттн = к + к_аттн
# ФФНН
к_ффнн = селф.ффнн(к_аттн)
к_ффнн = селф.дропоут(к_ффнн)
к_ффнн = селф.лаиер_норм(к_ффнн + к_аттн)
ретурн к_ффнн
Напредак у ЛЛМ Реасонинг
ЛЛМ су направили значајан напредак у закључивању и разумевању сложених односа између концепата. Неки од кључних напретка укључују:
1. Расуђивање засновано на графикону
Резоновање засновано на графу укључује представљање знања као графа, где чворови представљају концепте, а ивице односе између њих. ЛЛМ могу бити обучени да размишљају о овим графовима, правећи предвиђања о односима између чворова.
користите грапх::Грапх;
усе неурал_нетворк::НеуралНетворк;
фн грапх_реасонинг(граф: &Графикон, упит: &стр) -> Стринг {
нека ембеддинг = неурална_мрежа.куери(граф, упит);
нека резултат = неурална_мрежа.реасон(граф, уграђивање);
ресулт.то_стринг()
}
2. Учење са више задатака
Учење са више задатака укључује обуку једног модела за више задатака истовремено. Показало се да овај приступ побољшава перформансе ЛЛМ-а на различитим задацима, укључујући расуђивање и разумевање сложених односа.
пакет главни
увоз (
"фмт"
"гонум.орг/в1/гонум/мат"
)
типе Модел струцт {
*нн.Линеар
*нн.Линеар
}
фунц (м *Модел) Напред (к *мат.Денсе) *мат.Денсе {
// Пролаз напред
з := м.Линеар(к)
з = м.Линеар(з)
повратак з
}
3. Механизми пажње
Механизми пажње омогућавају ЛЛМ да се фокусирају на одређене делове улазног текста када генеришу излаз. Показало се да овај приступ побољшава перформансе ЛЛМ-а на различитим задацима, укључујући расуђивање и разумевање сложених односа.
увозна бакља
увези бакљу.нн као нн
цласс АттентионМецханисм(нн.Модуле):
деф __инит__(селф, д_модел, н_хеадс):
супер(АттентионМецханисм, селф).__инит__()
селф.куери = нн.Линеар(д_модел, д_модел)
селф.кеи = нн.Линеар(д_модел, д_модел)
селф.валуе = нн.Линеар(д_модел, д_модел)
селф.дропоут = нн.Дропоут(0.1)
селф.лаиер_норм = нн.ЛаиерНорм(д_модел)
деф напред(селф, к):
# Упит, кључ и вредност
к = селф.куери(к)
к = селф.кеи(к)
в = селф.валуе(к)
# Тегови пажње
тежине = торцх.матмул(к, к.Т) / матх.скрт(к.схапе[1])
тежине = селф.дропоут(веигхтс)
тежине = торцх.софтмак(тежине, дим=-1)
# Вектор контекста
контекст = торцх.матмул(тежине, в)
повратни контекст
Визуелизација
Да бисмо визуелизовали перформансе ЛЛМ-а на различитим задацима, можемо користити графикон да упоредимо тачност различитих модела на датом задатку. Ево примера графикона који користи Цхарт.јс:
{
"тип": "бар",
"подаци": {
"ознаке": ["Задатак 1", "Задатак 2", "Задатак 3"],
"сетови података": [
{
"лабел": "Модел 1",
"подаци": [0,8, 0,7, 0,9],
"бацкгроундЦолор": "ргба(255, 99, 132, 0.2)",
"бордерЦолор": "ргба(255, 99, 132, 1)",
"бордерВидтх": 1
},
{
"лабел": "Модел 2",
"подаци": [0,9, 0,8, 0,7],
"бацкгроундЦолор": "ргба(54, 162, 235, 0.2)",
"бордерЦолор": "ргба(54, 162, 235, 1)",
"бордерВидтх": 1
}
]
},
"опције": {
"наслов": {
"приказ": истина,
"тект": "Тачност различитих модела на различитим задацима"
},
"вага": {
"иАкес": [
{
"крпељи": {
"бегинАтЗеро": истина
}
}
]
}
}
}
Закључак
У овом чланку смо истражили напредак у ЛЛМ расуђивању, укључујући резоновање засновано на графовима, учење са више задатака и механизме пажње. Такође смо дали примере кода у Питхон-у, Русту и Го-у да бисмо илустровали ове концепте. Коначно, користили смо графикон за визуелизацију учинка ЛЛМ-а на различитим задацима. Овај напредак има потенцијал да револуционише поље НЛП-а, омогућавајући ЛЛМ-има да размисле и разумеју сложене односе између концепата.
Референце
- Васвани ет ал. (2017). Пажња је све што вам треба. арКсив препринт арКсив:1706.03762.
- Девлин ет ал. (2018). БЕРТ: Пре-тренинг дубоких двосмерних трансформатора за разумевање језика. арКсив препринт арКсив:1810.04805.
- Радфорд ет ал. (2019). Језички модели су ученици са више задатака без надзора. арКсив препринт арКсив:1906.08237.