Predstavljamo vdelave besedila in kode v API-ju OpenAI PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Predstavljamo vdelave besedila in kode v API OpenAI

Predstavljamo vdelave besedila in kode v API OpenAI

Predstavljamo vdelave, novo končno točko v API-ju OpenAI, ki olajša izvajanje nalog naravnega jezika in kode, kot so semantično iskanje, združevanje v gruče, modeliranje tem in klasifikacija. Vdelave so numerične predstavitve konceptov, pretvorjene v številska zaporedja, ki računalnikom olajšajo razumevanje odnosov med temi koncepti. Naše vdelave prekašajo vrhunske modele v 3 standardnih merilih uspešnosti, vključno z 20-odstotnim relativnim izboljšanjem pri iskanju kode.

Preberite dokumentacijoPreberi papir

Vdelave so uporabne za delo z naravnim jezikom in kodo, saj jih je mogoče brez težav uporabljati in primerjati z drugimi modeli in algoritmi strojnega učenja, kot sta združevanje v gruče ali iskanje.

Predstavljamo vdelave besedila in kode v API OpenAI
Predstavljamo vdelave besedila in kode v API OpenAI
Predstavljamo vdelave besedila in kode v API OpenAI
Predstavljamo vdelave besedila in kode v API OpenAI
Predstavljamo vdelave besedila in kode v API OpenAI
Predstavljamo vdelave besedila in kode v API OpenAI

Vdelave, ki so številčno podobne, so tudi pomensko podobne. Na primer, vdelani vektor »pasji spremljevalci pravijo« bo bolj podoben vdelanemu vektorju »woof« kot vektorju »meow«.

Predstavljamo vdelave besedila in kode v API OpenAI
Predstavljamo vdelave besedila in kode v API OpenAI

Nova končna točka uporablja modele nevronskih mrež, ki so potomci GPT-3, za preslikavo besedila in kode v vektorsko predstavitev – ju »vdela« v visokodimenzionalni prostor. Vsaka dimenzija zajame določen vidik vnosa.

Novi /vdelave končna točka v API OpenAI ponuja vdelavo besedila in kode z nekaj vrsticami kode:

import openai
response = openai.Embedding.create( input="canine companions say", engine="text-similarity-davinci-001")

Izdajamo tri družine modelov vdelave, od katerih je vsaka prilagojena za dobro delovanje pri različnih funkcijah: podobnost besedila, iskanje besedila in iskanje kode. Modeli sprejmejo besedilo ali kodo kot vhod in vrnejo vdelani vektor.

Modeli Uporabite primere
Podobnost besedila: Zajame semantično podobnost med deli besedila. besedilna podobnost-{ada, babbage, curie, davinci}-001 Grozdenje, regresija, odkrivanje anomalij, vizualizacija
Iskanje besedila: Semantično iskanje informacij nad dokumenti. iskanje po besedilu-{ada, babbage, curie, davinci}-{poizvedba, dokument}-001 Iskanje, ustreznost konteksta, iskanje informacij
Iskanje kode: Poiščite ustrezno kodo s poizvedbo v naravnem jeziku. code-search-{ada, babbage}-{code, text}-001 Iskanje kode in ustreznost

Modeli podobnosti besedila

Modeli podobnosti besedila zagotavljajo vdelave, ki zajemajo semantično podobnost delov besedila. Ti modeli so uporabni za številne naloge, vključno z grozdenje, vizualizacija podatkovin Razvrstitev.

Naslednja interaktivna vizualizacija prikazuje vdelave vzorcev besedila iz nabora podatkov DBpedia:

Povlecite za premikanje, pomaknite se ali približajte prste za povečavo

Vdelave iz text-similarity-babbage-001 model, uporabljen za DBpedia nabor podatkov. Naključno smo izbrali 100 vzorcev iz nabora podatkov, ki so pokrivali 5 kategorij, in izračunali vdelave prek /vdelave končna točka. Različne kategorije se prikažejo kot 5 jasnih grozdov v vdelanem prostoru. Za vizualizacijo prostora za vdelavo smo zmanjšali dimenzijo vdelave z 2048 na 3 z uporabo PCA. Na voljo je koda za vizualizacijo vdelanega prostora v 3D dimenziji tukaj.

Če želite primerjati podobnost dveh delov besedila, preprosto uporabite pik izdelek na vdelave besedila. Rezultat je "rezultat podobnosti", včasih imenovan "kosinusna podobnost,« med –1 in 1, pri čemer večja številka pomeni večjo podobnost. V večini aplikacij je mogoče vdelave vnaprej izračunati, nato pa je primerjava pikčastih produktov izjemno hitra.

import openai, numpy as np resp = openai.Embedding.create( input=["feline friends go", "meow"], engine="text-similarity-davinci-001") embedding_a = resp['data'][0]['embedding']
embedding_b = resp['data'][1]['embedding'] similarity_score = np.dot(embedding_a, embedding_b)

Ena priljubljena uporaba vdelav je njihova uporaba kot funkcij v nalogah strojnega učenja, kot je klasifikacija. V literaturi o strojnem učenju se pri uporabi linearnega klasifikatorja ta klasifikacijska naloga imenuje »linearna sonda«. Naši modeli podobnosti besedila dosegajo nove najsodobnejše rezultate pri klasifikaciji linearne sonde SentEval (Conneau et al., 2018), pogosto uporabljeno merilo uspešnosti za ocenjevanje kakovosti vdelave.

Klasifikacija linearne sonde v 7 naborih podatkov
Prejšnja SOTA (Gao et al. 2021)
90.2%
besedilo-podobnost-davinci-001
92.2%
Pokaži več

Modeli iskanja besedila

Modeli iskanja po besedilu zagotavljajo vdelave, ki omogočajo obsežne iskalne naloge, kot je iskanje ustreznega dokumenta med zbirko dokumentov, ki jih poda besedilna poizvedba. Vdelava za dokumente in poizvedbo se izvedeta ločeno, nato pa se za primerjavo podobnosti med poizvedbo in posameznim dokumentom uporabi kosinusna podobnost.

Iskanje na podlagi vdelave lahko posplošuje bolje kot tehnike prekrivanja besed, ki se uporabljajo pri klasičnem iskanju po ključnih besedah, ker zajame semantični pomen besedila in je manj občutljivo na natančne fraze ali besede. Učinkovitost modela iskanja po besedilu ocenjujemo na BEIR (Thakur, et al. 2021) zbirko za vrednotenje iskanja in doseči boljšo zmogljivost iskanja kot prejšnje metode. Naš vodnik za iskanje po besedilu nudi več podrobnosti o uporabi vdelav za iskalna opravila.

Modeli iskanja kode

Modeli iskanja kode zagotavljajo vdelave kode in besedila za naloge iskanja kode. Glede na zbirko kodnih blokov je naloga najti ustrezen kodni blok za poizvedbo v naravnem jeziku. Ocenjujemo modele iskanja kode na CodeSearchNet (Husian et al., 2019) ocenjevalni paket, kjer naše vdelave dosegajo bistveno boljše rezultate kot prejšnje metode. Oglejte si vodnik za iskanje kode za uporabo vdelav za iskanje kode.

Povprečna natančnost v 6 programskih jezikih
Prejšnja SOTA (Guo, et al. 2021)
77.4%
code-search-babbage-{doc, query}-001
93.5%
Pokaži več

Primeri API-ja za vdelave v akciji

JetBrains Research

JetBrains Research's Laboratorij za fiziko delcev analizira podatke, kot so Astronomski telegram in NASA Okrožnice GCN, ki so poročila, ki vsebujejo astronomske dogodke, ki jih tradicionalni algoritmi ne morejo razčleniti.

S pomočjo vdelav teh astronomskih poročil OpenAI lahko raziskovalci zdaj iščejo dogodke, kot so "izbruhi rakovega pulsarja", v več bazah podatkov in publikacijah. Vdelave so dosegle tudi 99.85-odstotno natančnost pri razvrščanju virov podatkov prek združevanja k-means v gruče.

FineTune Learning

FineTune Learning je podjetje, ki gradi hibridne rešitve človek-AI za učenje, kot je prilagodljive učne zanke ki študentom pomagajo doseči akademske standarde.

Vdelave OpenAI so znatno izboljšale nalogo iskanja učbeniške vsebine na podlagi učnih ciljev. Z doseganjem top 5 natančnosti 89.1 % je OpenAI-jev model vdelav besedilnega iskanja curie presegel prejšnje pristope, kot je Sentence-BERT (64.5 %). Medtem ko so človeški strokovnjaki še vedno boljši, lahko ekipa FineTune zdaj označi celotne učbenike v nekaj sekundah, v nasprotju z urami, ki so jih potrebovali strokovnjaki.

Primerjava naših vdelav s Sentence-BERT, GPT-3 iskanje in človeški strokovnjaki za vsebino za usklajevanje vsebine učbenikov z naučenimi cilji. Poročamo natančnost@k, kolikokrat je pravilen odgovor znotraj najvišjih k napovedi.

Fabius

Fabius podjetjem pomaga spremeniti pogovore s strankami v strukturirane vpoglede, ki so osnova za načrtovanje in določanje prednostnih nalog. Vdelave OpenAI omogočajo podjetjem, da lažje najdejo in označijo prepise klicev strank z zahtevami po funkcijah.

Stranke lahko na primer uporabijo besede, kot sta »avtomatsko« ali »enostavno za uporabo«, da zahtevajo boljšo samopostrežno platformo. Pred tem je Fabius uporabljal mehko iskanje po ključnih besedah, da bi poskušal te prepise označiti z oznako samopostrežne platforme. Z vdelavami OpenAI lahko zdaj najdejo 2x več primerov na splošno in 6x–10x več primerov za funkcije z abstraktnimi primeri uporabe, ki nimajo jasne ključne besede, ki bi jo stranke morda uporabile.

Vse stranke API-ja lahko začnejo uporabljati dokumentacijo o vdelavah za uporabo vdelav v njihovih aplikacijah.

Preberite dokumentacijo


Priznanja

Hvala naslednjim za njihove prispevke k tej izdaji:

Tao Xu, Chris Hallacy, Raul Puri, Alec Radford, Jesse Michael Han, Jerry Tworek, Qiming Yuan, Nikolas Tezak, Jong Wook Kim, Johannes Heidecke, Pranav Shyam, Tyna Eloundou Nekoul, Girish Sastry, Gretchen Krueger, David Schnurr, Felipe Petroski Takšni, Kenny Hsu, Madeleine Thompson, Tabarak Khan in Toki Sherbakov.

Hvala za povratne informacije o tej objavi: Tom Kleinpeter, Morgan Gallant, Sam Altman, Ilya Sutskever, Steve Dowling, Rachel Lim, Arun Vijayvergiya, Rajeev Nayak, Peter Welinder, Justin Jay Wang.

.vector-diagram img { display: none;
}
.vector-diagram img:first-child { display: block;
}

var printResponse = function (btn) { // pripni odgovor var responseEl = document .querySelector('.endpoint-code-response') .querySelector('code') var callParentEl = document .querySelector('.endpoint-code-call' ) .querySelector('pre') if (!responseEl || !callParentEl) return; callParentEl.appendChild(responseEl); // skrij gumb btn.style.display= 'brez';
}; var initRotate = function () { var rotates = document.querySelectorAll('.js-rotate'); if (!rotates.length) return; // za vsak niz vrtenja rotates.forEach(function (r) { // premakni prvega podrejenega na konec vsakih n sekund window.setInterval(function(){ moveToEnd(r, r.firstElementChild); }, 1500); }) ;
};
var moveToEnd = funkcija (starš, otrok) { parent.removeChild(child); parent.appendChild(child); // pripni nadrejenemu
}; var initShowMore = funkcija () { var showmores = document.querySelectorAll('.js-showmore'); showmores.forEach(function (e) { e.addEventListener('click', function () { var showmoreparent = this.parentElement; if (!showmoreparent) return; var more = showmoreparent.querySelector('.js-more'); if (!more) return; more.style.display = 'block'; this.style.display = 'none'; }); });
}; // v
document.addEventListener('DOMContentLoaded', function () { initRotate(); initShowMore();
});
uvozite {Runtime, Inspector, Library} iz “https://unpkg.com/@observablehq/runtime@4.5.0/dist/runtime.js”;
import notebook_topk from “https://api.observablehq.com/d/20c1e51d6e663e6d.js?v=3”;
import notebook_embed3d from “https://api.observablehq.com/d/fef0801cb0a0b322.js?v=3” const customWidth = function (selector) { return (new Library).Generators.observe(function(change) { var width = change(document.querySelector(selector).clientWidth); function resized() { var w = document.querySelector(selector).clientWidth; if (w !== width) change(width = w); } window.addEventListener(“ spremeni velikost", spremenjena velikost); return function() { window.removeEventListener("spremeni velikost", spremenjena velikost); }; });
}; const topk_renders = { “graf”: “#topk-graf”,
};
new Runtime(Object.assign(new Library, {width: customWidth(“#topk-chart”)})).module(notebook_topk, name => { const selector = topk_renders[name]; if (selector) { // tipka obstaja vrni nov Inspector(document.querySelector(selector)); } else { return true; }
}); const embed3d_renders = { “chart”: “#embed3d-chart”, “legenda”: ​​“#embed3d-legend”,
};
new Runtime(Object.assign(new Library, {width: customWidth(“#embed3d-chart”)})).module(notebook_embed3d, name => { const selector = embed3d_renders[name]; if (selector) { // tipka obstaja vrni nov Inspector(document.querySelector(selector)); } else { return true; }
});

Časovni žig:

Več od OpenAI