Кіріспе
Үлкен тілдік модельдер (LLM) соңғы жылдары табиғи тілді өңдеу (NLP) саласында төңкеріс жасады. Бұл модельдер әртүрлі NLP тапсырмаларында, соның ішінде тілдік аудармада, мәтінді қорытындылауда және сұраққа жауап беруде заманауи нәтижелерге қол жеткізді. Дегенмен, LLM-дің шынайы әлеуеті олардың түсініктер арасындағы күрделі қатынастарды пайымдау және түсіну қабілетінде жатыр. Бұл мақалада біз негізгі әдістерді, архитектураларды және қиындықтарды зерттей отырып, LLM негіздеуіндегі жетістіктерді қарастырамыз.
Фон
LLM - сөздер мен ұғымдар арасындағы үлгілер мен қарым-қатынастарды үйрену үшін мәтіндік деректердің үлкен көлеміне үйретілген нейрондық желінің бір түрі. Бұл модельдер әдетте кодтауыш пен дешифратордан тұрады, мұнда кодтаушы кіріс мәтінін өңдейді және декодер шығыс мәтінін жасайды. Кодер әдетте трансформаторға негізделген архитектура болып табылады, ол мәтін сияқты дәйекті деректер үшін өте қолайлы.
Трансформаторлар архитектурасы
Васвани және т.б. «Назар аударыңыз - сізге қажет» мақаласында енгізілген трансформатор архитектурасы. (2017), LLM үшін іс жүзінде стандартқа айналды. Трансформатор әрқайсысы бірнеше қабаттан тұратын шифрлағыш пен дешифратордан тұрады. Әрбір қабат екі ішкі қабаттан тұрады: өзіне-өзі назар аудару механизмі және толық қосылған алға жіберу желісі (FFNN).
импорттық шам
nn ретінде torch.nn импорттау
Class TransformerLayer(nn.Module):
def __init__(өзіндік, d_model, n_heads, d_ff):
super(TransformerLayer, self).__init__()
self.self_attn = nn.MultiHeadAttention(d_model, n_heads)
self.ffnn = nn.Сызықтық(d_model, d_ff)
self.dropout = nn.Dropout(0,1)
self.layer_norm = nn.LayerNorm(d_model)
Def forward(өзіндік, x):
# Өзіне көңіл бөлу механизмі
x_attn = self.self_attn(x, x)
x_attn = self.dropout(x_attn)
x_attn = x + x_attn
# FFNN
x_ffnn = self.ffnn(x_attn)
x_ffnn = self.dropout(x_ffnn)
x_ffnn = self.layer_norm(x_ffnn + x_attn)
x_ffnn қайтару
LLM дәлелдеудегі жетістіктер
LLM-тер түсініктер арасындағы күрделі қатынастарды пайымдау және түсінуде айтарлықтай жетістіктерге жетті. Негізгі жетістіктердің кейбірі мыналарды қамтиды:
1. Графикке негізделген пайымдау
Графикке негізделген пайымдау білімді график түрінде көрсетуді қамтиды, мұнда түйіндер ұғымдарды, ал жиектер олардың арасындағы қатынастарды білдіреді. LLM-лерді түйіндер арасындағы байланыстар туралы болжам жасай отырып, осы графиктер туралы ойлауға үйретуге болады.
графикті қолданыңыз::График;
neural_network пайдаланыңыз::NeuralNetwork;
fn graph_reasoning(график: &Граф, сұрау: &str) -> Жол {
let embedding = neural_network.query(график, сұрау);
let result = neural_network.reason(график, ендіру);
result.to_string()
}
2. Көп тапсырманы оқыту
Көп тапсырманы оқыту бір уақытта бірнеше тапсырма бойынша бір модельді оқытуды қамтиды. Бұл тәсіл күрделі қарым-қатынастарды пайымдау мен түсінуді қоса алғанда, әртүрлі тапсырмалар бойынша LLM өнімділігін жақсарту үшін көрсетілді.
негізгі пакет
импорт (
"fmt"
"gonum.org/v1/gonum/mat"
)
түрі үлгі құрылымы {
*nn.Сызықтық
*nn.Сызықтық
}
func (m *Үлгі) Алға(x *мат.Тығыз) *мат.Тығыз {
// Алға өту
z := m.Сызықтық(x)
z = m.Сызықтық(z)
қайтару z
}
3. Назар аудару механизмдері
Назар аудару механизмдері LLM-ге шығысты жасау кезінде кіріс мәтінінің белгілі бір бөліктеріне назар аударуға мүмкіндік береді. Бұл тәсіл күрделі қарым-қатынастарды пайымдау мен түсінуді қоса алғанда, әртүрлі тапсырмалар бойынша LLM өнімділігін жақсарту үшін көрсетілді.
импорттық шам
nn ретінде torch.nn импорттау
Class AttentionMechanism(nn.Module):
def __init__(self, d_model, n_heads):
super(AttentionMechanism, self).__init__()
self.query = nn.Linear(d_model, d_model)
self.key = nn.Linear(d_model, d_model)
self.value = nn.Linear(d_model, d_model)
self.dropout = nn.Dropout(0,1)
self.layer_norm = nn.LayerNorm(d_model)
Def forward(өзіндік, x):
# Сұрау, кілт және мән
q = self.query(x)
k = self.key(x)
v = өзіндік мән(x)
# Назар аударатын салмақтар
салмақтар = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
салмақтар = self.dropout (салмақ)
салмақтар = torch.softmax(салмақ, күңгірт =-1)
# Мәтінмәндік вектор
контекст = torch.matmul(салмақ, v)
қайтару контекст
Визуализация
Әртүрлі тапсырмалар бойынша LLM өнімділігін визуализациялау үшін берілген тапсырма бойынша әртүрлі үлгілердің дәлдігін салыстыру үшін диаграмманы пайдалана аламыз. Міне, Chart.js қолданатын диаграмманың мысалы:
{
"түрі": "бар",
«деректер»: {
"labels": ["1-тапсырма", "2-тапсырма", "3-тапсырма"],
"деректер жинағы": [
{
"label": "1-үлгі",
"деректер": [0,8, 0,7, 0,9],
"backgroundColor": "rgba(255, 99, 132, 0.2)",
"borderColor": "rgba(255, 99, 132, 1)",
"borderWidth": 1
},
{
"label": "2-модель",
"деректер": [0,9, 0,8, 0,7],
"backgroundColor": "rgba(54, 162, 235, 0,2)",
"borderColor": "rgba(54, 162, 235, 1)",
"borderWidth": 1
}
]
},
"опциялар": {
«атауы»: {
«дисплей»: шын,
"text": "Әртүрлі тапсырмалардағы әртүрлі үлгілердің дәлдігі"
},
«таразы»: {
"yAxes": [
{
«кенелер»: {
"beginAtZero": шын
}
}
]
}
}
}
Қорытынды
Бұл мақалада біз LLM дәлелдеуіндегі жетістіктерді, соның ішінде графикалық негіздемелерді, көп тапсырмаларды оқытуды және зейін механизмдерін зерттедік. Біз сондай-ақ Python, Rust және Go бағдарламаларында осы ұғымдарды көрсету үшін код мысалдарын бердік. Соңында біз әртүрлі тапсырмалар бойынша LLM өнімділігін визуализациялау үшін диаграмманы қолдандық. Бұл жетістіктер NLP саласында төңкеріс жасау мүмкіндігіне ие, бұл LLM-ге түсініктер арасындағы күрделі қатынастарды түсінуге және түсінуге мүмкіндік береді.
Анықтамалар
- Васвани және т.б. (2017). Сізге тек назар аудару керек. arXiv алдын ала басып шығару arXiv:1706.03762.
- Devlin және т.б. (2018). БЕРТ: Тілді түсінуге арналған терең қос бағытты трансформаторларды алдын ала оқыту. arXiv алдын ала басып шығару arXiv:1810.04805.
- Рэдфорд және т.б. (2019). Тіл үлгілері – бақыланбайтын көп тапсырманы үйренушілер. arXiv алдын ала басып шығару arXiv:1906.08237.