Fampidirana
Ny Large Language Models (LLMs) dia nanova ny sehatry ny fanodinana fiteny voajanahary (NLP) tato anatin'ny taona vitsivitsy. Ireo maodely ireo dia nahazo vokatra manara-penitra amin'ny asa NLP isan-karazany, ao anatin'izany ny fandikana amin'ny fiteny, famintinana lahatsoratra ary famaliana fanontaniana. Na izany aza, ny tena mety ho an'ny LLM dia miankina amin'ny fahaizany misaina sy mahatakatra ny fifandraisana sarotra misy eo amin'ny foto-kevitra. Ato amin'ity lahatsoratra ity isika dia handinika ny fandrosoana amin'ny fanjohian-kevitra LLM, hikaroka ny teknika, ny maritrano ary ny fanamby.
Lafo
LLM dia karazana tambajotra neural izay voaofana amin'ny angona lahatsoratra be dia be mba hianarana lamina sy fifandraisana misy eo amin'ny teny sy ny hevitra. Ireo modely ireo matetika dia misy encoder sy decoder, izay ny encoder no manodina ny lahatsoratra fampidirana ary ny decoder no mamoaka ny lahatsoratra mivoaka. Ny encoder dia matetika rafitra mifototra amin'ny transformer, izay mety indrindra amin'ny angona manaraka toy ny lahatsoratra.
Architecture Transformer
Ny rafitra transformer, nampidirina tao amin'ny taratasy "Attention is all you need" nataon'i Vaswani et al. (2017), dia lasa fenitra de facto ho an'ny LLM. Ny transformer dia misy encoder sy decoder, samy misy sosona maromaro. Ny sosona tsirairay dia misy sosona roa: mekanika mifantoka amin'ny tena sy tamba-jotra famatsiana (FFNN) mifandray tanteraka.
fanilo fanafarana
manafatra fanilo.nn toy ny nn
kilasy TransformerLayer(nn.Module):
def __init__(tena, d_model, n_heads, d_ff):
super(TransformerLayer, tena).__init__()
self.self_attn = nn.MultiHeadAttention(d_model, n_heads)
self.ffnn = nn.Linear(d_model, d_ff)
self.dropout = nn.Dropout(0.1)
self.layer_norm = nn.LayerNorm(d_model)
def mandroso (tena, x):
# Mekanika mifantoka amin'ny tena
x_attn = tena.self_attn(x, x)
x_attn = self.dropout(x_attn)
x_attn = x + x_attn
#FFNN
x_ffnn = tena.ffnn(x_attn)
x_ffnn = self.dropout(x_ffnn)
x_ffnn = self.layer_norm(x_ffnn + x_attn)
miverina x_ffnn
Fandrosoana amin'ny fanjohian-kevitra LLM
Nandroso be ny LLM tamin'ny fanjohian-kevitra sy fahatakarana ny fifandraisana sarotra misy eo amin'ny foto-kevitra. Ny sasany amin'ireo fandrosoana lehibe dia ahitana:
1. Fanjohian-kevitra mifototra amin'ny sary
Ny fanjohian-kevitra mifototra amin'ny graph dia ahitana ny fanehoana ny fahalalana ho toy ny grafika, izay ny nodes dia maneho hevitra ary ny sisiny dia maneho ny fifandraisana misy eo amin'izy ireo. Ny LLM dia azo ampiofanina hieritreritra momba ireo kisary ireo, manao faminaniana momba ny fifandraisana misy eo amin'ny nodes.
mampiasa graph::Graph;
mampiasa neural_network::NeuralNetwork;
fn graph_reasoning(graph: &Graph, query: &str) -> String {
avelao embedding = neural_network.query(graph, query);
avelao ny vokatra = neural_network.reason(graph, embedding);
result.to_string()
}
2. Fianarana asa maro
Ny fianarana asa maro dia mitaky fanofanana modely tokana amin'ny asa maro miaraka. Ity fomba fiasa ity dia naseho hanatsara ny fahombiazan'ny LLM amin'ny asa isan-karazany, ao anatin'izany ny fanjohian-kevitra sy ny fahazoana fifandraisana sarotra.
fonosana lehibe
import (
"fmt"
"gonum.org/v1/gonum/mat"
)
karazana Model struct {
*nn.Linear
*nn.Linear
}
func (m *Modely) Mandrosoa(x *mat.Dense) *mat.Dense {
// Fandalovana mandroso
z := m.Linear(x)
z = m.Linear(z)
miverina z
}
3. Mekanisma saina
Ny mekanika saina dia mamela ny LLM hifantoka amin'ny ampahany manokana amin'ny lahatsoratra fampidirana rehefa mamorona ny vokatra. Ity fomba fiasa ity dia naseho hanatsara ny fahombiazan'ny LLM amin'ny asa isan-karazany, ao anatin'izany ny fanjohian-kevitra sy ny fahazoana fifandraisana sarotra.
fanilo fanafarana
manafatra fanilo.nn toy ny 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 mandroso (tena, x):
# Fanontaniana, lakile ary sanda
q = self.query(x)
k = tena.key(x)
v = self.value(x)
# Lanja saina
lanja = torch.matmul(q, k.T) / math.sqrt(q.shape[1])
lanja = self.dropout(lanja)
lanja = fanilo.softmax(lanja, dim=-1)
# Vector context
context = torch.matmul(lanja, v)
miverina context
Visualization
Mba hampisehoana ny fahombiazan'ny LLM amin'ny asa isan-karazany, dia afaka mampiasa tabilao isika mba hampitahana ny fahamarinan'ny modely samihafa amin'ny asa iray. Ity misy ohatra amin'ny tabilao mampiasa Chart.js:
{
"type": "bar",
"data": {
"labels": ["Asa 1", "Asa 2", "Asa 3"],
"datasets": [
{
"label": "Môdely 1",
"data": [0.8, 0.7, 0.9],
"backgroundColor": "rgba(255, 99, 132, 0.2)",
"borderColor": "rgba(255, 99, 132, 1)",
"BorderWidth": 1
},
{
"label": "Modely 2",
"data": [0.9, 0.8, 0.7],
"backgroundColor": "rgba(54, 162, 235, 0.2)",
"borderColor": "rgba(54, 162, 235, 1)",
"BorderWidth": 1
}
]
},
"safidy": {
"lohateny": {
"fampisehoana": marina,
"text": "Ny fahamarinan'ny maodely samihafa amin'ny asa isan-karazany"
},
"mizana": {
"yAxes": [
{
"tonga": {
"beginAtZero": marina
}
}
]
}
}
}
Fehiny
Ato amin'ity lahatsoratra ity, dia nandinika ny fandrosoana amin'ny fanjohian-kevitra LLM isika, ao anatin'izany ny fanjohian-kevitra mifototra amin'ny grafika, ny fianarana asa maro, ary ny fomba fiasan'ny saina. Nanome ohatra kaody amin'ny Python, Rust, ary Go ihany koa izahay mba hanehoana ireo hevitra ireo. Farany, nampiasa tabilao izahay mba hijerena ny fahombiazan'ny LLM amin'ny asa isan-karazany. Ireo fandrosoana ireo dia mety hanova ny sehatry ny NLP, ahafahan'ny LLM manjohy hevitra sy mahatakatra ny fifandraisana sarotra misy eo amin'ny foto-kevitra.
References
- Vaswani et al. (2017). Ny saina no ilainao. arXiv preprint arXiv:1706.03762.
- Devlin et al. (2018). BERT: Fanofanana mialoha ny Transformers Deep Bidirectional ho an'ny fahatakarana ny fiteny. arXiv preprint arXiv:1810.04805.
- Radford et al. (2019). Ny Modely amin'ny fiteny dia Mpianatra Multitask tsy voafehy. arXiv preprint arXiv:1906.08237.