A figyelem nem egészen szükséged

Miközben a MacGraph-on dolgoztam, amely egy neurális hálózat, amely tudásdiagramok segítségével válaszol a kérdésekre, felmerült egy problémám: Hogyan tudom megmondani, ha valami nem szerepel a listában.

Ebben a cikkben megmutatjuk a megoldásunkat, a fókuszjelet, és megmutatjuk, hogyan működik megbízhatóan különféle adatkészletek és architektúrák körében.

Háttér

A hagyományos programozás során könnyű megmondani, ha valami nem szerepel a listában: futtasson egy for-hurkot az elemek felett, és ha a végéhez jut, de nem találja meg, akkor nincs ott. Az ideghálózatok azonban nem annyira egyszerűek.

A neurális hálózatok differenciálható funkciókból állnak, hogy gradiens leszármazással képesek legyenek őket kiképezni. Az egyenlőségű operátorok a hurkokhoz és adott esetben a hagyományos programozás standard elemei, amelyek ezt a feladatot oldják meg, nem működnek annyira jól az ideghálózatokban:

  • Az egyenlőségi operátor alapvetően egy lépésfüggvény, amelynek szinte mindenhol nulla gradiense van (és ezért megszakítja a gradiens leszármazási vissza-terjedését)
  • Ha a feltételek általában logikai jelet használnak az ágak átváltására, ez ismét egy problémás lépésfüggvény kimenete
  • Míg a hurkok a GPU-k esetében nem hatékonyak, és néha nem is hasznosak, mivel a neurális hálózati könyvtárak gyakran megkövetelik, hogy minden adatnak azonos méretűek legyenek (például a TensorFlow végrehajt egy statikusan meghatározott tenzortoron).

A tételek listáival végzett munkához egy népszerű ideghálózati technika (például olyan mondatok fordítása, amelyek szavakkal kezelik őket) a „figyelem” alkalmazása. Ez egy olyan funkció, amelynek során a hálózat keresett „lekérdezését” összehasonlítják a lista egyes elemeivel, és a lekérdezéshez hasonló elemek súlyozott összegét adják ki:

A fenti példában

  1. A lekérdezés pontozottan történik, a lista minden elemével kiszámítva egy „pontszámot”. Ezt minden elemnél párhuzamosan végzik
  2. A pontszámokat ezután továbbítják a softmax-on, hogy átalakítsák azokat egy 1,0-es összegű listává. A pontszámokat ezután valószínűség-eloszlásként lehet felhasználni.
  3. Végül kiszámítják a tételek súlyozott összegét, az egyes tételeket súlyozva

A figyelem nagyon sikeres volt, és képezi az alapját a jelenlegi osztályban legjobb fordítási modelleknek. A mechanizmus különösen jól működött, mert:

  • Ez gyorsan és egyszerűen végrehajtható
  • Egy ismétlődő neurális hálózathoz (például LSTM) képest sokkal jobban képes hivatkozni a bemeneti sorozat múltbeli értékeire. Az LSTM-nek meg kell tanulnia, hogy a múlt értékeit egységes belső állapotban egymás után megőrizze a többszörös RNN-ismétléseknél, míg a figyelmeztetés a továbblépés bármely pontján visszahívhatja a múlt értékét.
  • Számos feladat megoldható a listaelemek átszervezésével és kombinálásával, hogy új listát képezzen (például a figyelemmodellek fontos elemei voltak a jelenlegi osztályban legjobb fordítás, kérdésmegoldás és érvelés modelljeinek).

A mi problémánk

A figyelem sokrétűsége és sikere ellenére hiányosságai miatt a gráf kérdésre válaszolunk: a figyelem nem jelenti azt, hogy van-e egy elem a listában.

Ez először történt, amikor megpróbáltunk válaszolni olyan kérdésekre, mint „Van-e London Bridge nevű állomás?” És „A Trafalgar Square állomás a Waterloo állomással szomszédos?”. A gráf csomópontok és élek táblázata tartalmazza ezeket az információkat a kibontáshoz, de maga a figyelem nem tudta sikeresen meghatározni az elem létezését.

Ez azért történik, mert a figyelem a lista súlyozott összegét adja vissza. Ha a lekérdezés megegyezik (például magas pontszámot mutat) a lista egyik elemével, akkor a kimenet majdnem pontosan megegyezik az értékkel. Ha a lekérdezés nem felelt meg az elemeknek, akkor a listában szereplő összes elem visszaadódik. Figyelemfelhívás alapján a hálózat többi része nem tud különbséget tenni e két helyzet között.

Megoldásunk

Az általunk javasolt egyszerű megoldás a nyers elem-lekérdezés pontszámainak skaláris aggregátumainak kinyerése (pl. A softmax használata előtt). Ez a jel alacsony, ha egyetlen elem sem hasonlít a lekérdezéshez, és magas, ha sok elem van.

A gyakorlatban ez nagyon hatékonyan működött (valójában az egyetlen robusztus megoldás a sok közül, amit teszteltünk) a létezési kérdések megoldásában. Mostantól ezt a jelet „fókusznak” nevezzük. Itt látható a korábban bemutatott figyelem-hálózat, a fókuszjel hozzáadásával:

Figyelem fókuszjelzéssel, a nyers pontszámok összesítéséhez összegzéssel

Kísérleti elrendezés

Megállapítva, hogy a fókuszjel elengedhetetlen a MacGraph számára bizonyos feladatok végrehajtásához, ezt a koncepciót számos adatkészletben és modell-architektúrán teszteltük.

A kísérlet ideghálója

Felépítettünk egy hálózatot, amely felveszi az elemek listáját és a kívánt elemet (a „lekérdezést”), és kimenetet készít arról, hogy az elem szerepel-e a listában. A hálózat veszi a bemeneteket, elvégzi a figyelmet (opcionálisan a fókuszjelünkkel), átalakítja a kimeneteket néhány maradék rétegen keresztül, majd bináris eloszlást küld ki1 arról, hogy az elem megtalálható-e.

A hálózati veszteséget a softmax kereszt-entrópiával számolják, és az Adam optimalizáló segítségével képzik. Minden hálózati változatnak megvan az ideális tanulási aránya, amelyet az edzés előtt a tanulási sebesség-kereső segítségével határoznak meg.

Kísérleteinkben a hálózatot az alábbiak szerint változtatjuk:

  • A fókuszjel bevonása / eltávolítása a figyelmeztető lépésből („Használj fókuszt” alább)
  • A figyelmeztető pontszám függvényének változtatása
  • A fókuszjel-aggregációs funkció változtatása
  • Az első maradék transzformációs réteg aktiválási funkciójának változtatása („Kimeneti aktiválás” alább)

Ezután ezeket a hálózati variációkat néhány különféle adatkészletre alkalmazzuk, amelyeket a következő szakaszban sorolunk fel.

Itt található az összes tesztelt hálózati konfiguráció:

A fókuszjelet elengedhetetlennek találta a hálózat számára, hogy megbízhatóan elérje a> 99% -os pontosságot az adatkészletek és a hálózati konfigurációk tartományában.

Kísérleteink kódja nyílt forráskódú a GitHub-ban.

Datasets

Minden adatkészlet példákból áll, mindegyik példa tartalmazza a bemeneti funkciókat Elemek listája, a kívánt elem és az alapvető igazságkimenet, az elem listában van. Az elem a lebegőpontos számok N dimenziós vektora.

Minden adatkészletet úgy alakítottak ki, hogy 100% -os pontosság lehetséges.

Három különféle adatkészlettel teszteltünk, mindegyik eltérő elemforrással:

  • Ortogonális egy forró vektorok, hossza 12
  • Sokat forró vektorok (például 1,0 és 0,0 s véletlen sorok), amelyek hossza 12
  • 300 hosszú Word2vec vektorok

Minden adatkészletnek kiegyensúlyozott válaszosztálya van (azaz azonos számú igaz és hamis válasz)

Az egy forró és a sok forró vektorokat véletlenszerűen állítottuk elő. Minden képzési példa két elemből áll. Minden adatkészlet 5000 oktató elemmel rendelkezik. Íme az egyik képzési példa:

Képzési példa az ortogonális egy forró adatkészletben. (A vizuális egyszerűség érdekében a 3-as hosszként ábrázolt vektorok)

A Word2vec adatkészletünkhez előre kiszámított Word2vec beágyazásokat használtunk, amelyeket a Google Hírekben tanítottak, és amelyek letölthetők itt.

A word2vec adatkészlet legfeljebb 77 hosszú elemeket tartalmaz, amelyek mindegyike egy 300 soros wikipedia cikkből véletlenszerűen választott mondatot képvisel. Minden kívánt elem véletlenszerűen kiválasztott word2vec vektor a cikkben szereplő szavakból.

Eredmények

A fókuszjelet elengedhetetlennek találta az elem létezésének megbízható meghatározásához:

  • A fókuszjel nélkül nem érhető el hálózati konfiguráció> 56% -os pontossággal minden adatkészletnél
  • Ortogonális adatkészlet-vektorok esetén a fókuszjel nélkül egyetlen hálózat sem érhető el> 80% -os pontossággal
  • Azok a hálózatok, ahol a fókuszjelet> 98% -os pontossággal értik el az összes adatkészletben és konfigurációban, a fókuszjel nélküli hálózatok csak a 98-as konfigurációból 4-nél> 98% -ot értek el

Meg kell jegyezni, hogy a fókuszjel nélküli hálózat bizonyos konfigurációkban és adatkészletekben> 98% -os pontosságot ért el.

Következtetés

Ebben a cikkben egy új koncepciót vezettünk be a figyelmi hálózatokra, a „fókuszjel”. Megmutattuk, hogy ez egy robusztus mechanizmus a tételek létezésének észlelésére egy listában, amely fontos művelet a gépi érvelés és a kérdések megválaszolása szempontjából. A fókuszjel sikeresen észlelte az elem létezését az összes tesztelt adatkészletben és hálózati konfigurációban.

Reméljük, hogy ez a munka segít más csapatoknak az elem-létezés kihívásának kezelésében, és nagyobb egyértelműséget ad a használandó architektúra megfontolásában.

Octavian kutatása

Octavian küldetése az, hogy emberi szintű gondolkodási képességekkel rendelkező rendszereket fejlesszen ki. Úgy gondoljuk, hogy a grafikon adatai és a mély tanulás kulcsfontosságú összetevői ennek lehetővé tételéhez. Ha szeretne többet megtudni kutatásainkról vagy közreműködni, nézd meg weboldalunkat, vagy vegye fel a kapcsolatot.

Köszönetnyilvánítás

Szeretnék köszönetet mondani David Macknek az eredeti ötletért és a cikk szerkesztésében nyújtott nagy segítségért. Szeretnék köszönetet mondani Andrew Jeffersonnak is a kód nagy részének megírásáért és az írás közben. Végül szeretnék köszönetet mondani Octaviannak, aki lehetőséget adott nekem a projekt kidolgozására.

Lábjegyzetek

  1. A kimeneti transzformációs rétegeket a MacGraph-ból másoltuk, és egyszerűsíthetjük őket. A szigmoid (σ) réteg feltétlenül szükségtelen ebben a modellben, mivel korlátozza a bemenetek tartományát a softmax-ig, és ezért megakadályozza, hogy a modell nulla veszteségig képezzék a trendet (bár mégis elérheti a 100% -os pontosságot, mivel a kimenet argmax ' egy forró vektorra szerkesztve és a címkével összehasonlítva). Nem hisszük, hogy ez a komplexitás érvényteleníti az eredményeket, de kénytelen voltunk ezt kihívni.