dimhold.by
← Артыкулы

Я праверыў парады па промптах на GPT-2 і парадак прыкладаў аказаўся важнейшым за іх усе

З таго часу, як выйшла GPT-3, парад пра тое, як пісаць промпт, становіцца ўсё больш. Будзь ветлівы. Скажы мадэлі, што яна эксперт. Напішы IMPORTANT вялікімі літарамі і папрасі думаць уважліва. Пастаў наверх выразную інструкцыю. Большая частка гэтых парад ідзе ад чалавека, які адзін раз паспрабаваў праз API і ў яго спрацавала. Другога прагону за гэтым няма.

Я чытаў гэтыя парады і раскладаў іх у галаве, нічога не вымяраючы. Ветлівасць і “you are an expert” я запісаў у забабоны. Выразную інструкцыю запісаў у рамяство, адзіную частку промпта, якая прынамсі не можа нашкодзіць. Запусціць GPT-3 дома я не магу. Але той самы прыём з некалькімі прыкладамі ў промпце працуе і на GPT-2, таму я паставіў абедзве групы парад на адну задачу і палічыў.

Стэнд

Задача SST-2 з GLUE: 872 кароткія водгукі пра фільмы з dev-часткі, 444 з іх станоўчыя. Мадэль, якая на ўсё адказвае “positive”, атрымлівае 50,9%.

Промпт пачынаецца з інструкцыі: “Classify the sentiment of each movie review as positive or negative.” Далей ідуць 4 прыклады з навучальнай часткі, 2 станоўчыя і 2 адмоўныя, у выглядзе Review: ... і Sentiment: positive. Потым водгук, які трэба класіфікаваць. Мадэль нічога не генеруе. Я параўноўваю імавернасць слоў ” positive” і ” negative” як наступнага слова, таму адзін і той самы промпт заўсёды дае адзін і той самы лік.

Мадэлі GPT-2 medium (355M параметраў) і GPT-2 large (774M) у float32, на 4 ядрах AMD EPYC 7713 на віртуальнай машыне. На torch 1.11 з transformers 4.17 падлік дае тыя самыя прадказанні. Для medium я прагнаў 217 промптаў, для large 99 з іх.

Я выбраў 10 набораў па 4 прыклады з фіксаваным seed. Кожны варыянт ідзе на тых самых 10 наборах, так што змена ў промпце застаецца адзінай розніцай.

Парады

GPT-2 medium, дакладнасць на 872 водгуках, % 1 кропка = 1 набор з 4 прыкладаў сярэдняе па 10 наборах 50 60 70 80 90 без інструкцыі звычайная please ... thank you you are an expert IMPORTANT, think carefully перакладзі на французскую камедыя ці драма
Ва ўсіх шэрагах тыя самыя 10 набораў прыкладаў. Унутры шэрагу кропкі разыходзяцца на 29-36 пунктаў, сярэднія паміж шэрагамі адрозніваюцца не больш чым на 9,5. У звычайнай інструкцыі сярэдняе самае нізкае.

На medium звычайная інструкцыя дае ў сярэднім 59,3% па 10 наборах. “Please … Thank you!” дае 62,8%, “You are an expert film critic.” 60,7%, IMPORTANT з “Think carefully and be accurate.” 60,3%. Ветлівая лепшая за звычайную на 5 наборах і горшая на 4, гэта як падкінуць манету. Варыянт з вялікімі літарамі лепшы на 7 і горшы на 2, але 10 набораў замала, каб быць у гэтым упэўненым.

Але паглядзіце на шэрагі малюнка, а не на сярэднія. Пры звычайнай інструкцыі адзін толькі набор прыкладаў рухае вынік ад 48,9% да 82,1%. Гэта 33 пункты ад выбару 4 водгукаў. Словы, пра якія я гатовы быў спрачацца, зрушылі сярэдняе на 1-4 пункты.

Дзе я памыліўся

У інструкцыю я якраз верыў, таму прагнаў промпт і без яе. Без інструкцыі medium атрымлівае 68,8%, на 9,5 пункта больш, лепш на 8 наборах з 10 і горш на 1. Потым я паспрабаваў 2 няправільныя інструкцыі. “Translate each sentence into French.” дае 65,5%, а “Classify each movie review by whether it is about a comedy or a drama.” 64,5%, таксама больш, чым правільная.

Без прыкладаў тое самае. Голы Review: ... Sentiment: дае 73,2%, са звычайнай інструкцыяй зверху 60,8%, з ветлівай 53,9%. З “please” мадэль адказвае positive на 97% водгукаў.

Я нейкі час шукаў памылку. Праверыў, што інструкцыя сапраўды трапляе ў промпт і што кожнае з двух слоў-метак займае адзін токен. Закэшаваны прэфікс таксама даў тыя самыя токены, што і поўны тэкст. Усё было ў парадку. Чаму гэтая інструкцыя шкодзіць medium, я не ведаю.

Парадак тых самых 4 прыкладаў

GPT-2 medium, тыя самыя 4 прыклады ў 24 парадках, 3 наборы меткі ў парадку + - + - любы іншы парадак 0 25 50 75 100 50 60 70 80 90 адказ "positive", % водгукаў дакладнасць, % усё "positive": 50,9 усе 12 парадкаў + - + -
Дакладнасць высокая толькі там, дзе мадэль дзеліць адказы прыкладна пароўну. Усе 12 парадкаў, дзе меткі чаргуюцца, пачынаючы са станоўчай, апынуліся ў адным куце.

Для 3 набораў я прагнаў усе 24 парадкі тых самых 4 прыкладаў, не мяняючы ніводнага слова. На наборы 0 дакладнасць ідзе ад 50,9% да 78,3%, на наборы 1 ад 50,2% да 84,5%, на наборы 2 ад 50,1% да 82,1%. Чжао з калегамі паказалі гэта на GPT-3 летась. Лу з калегамі зрабілі гэта на GPT-2 якраз па такой схеме, SST-2 і ўсе 24 парадкі 4 прыкладаў, так што гэта не навіна. Але я не чакаў, што гэты эфект акажацца большым за ўсё астатняе ў маёй сетцы.

Дрэнныя парадкі не выпадковыя. На 3 наборах ёсць 12 парадкаў з меткамі + - + -. Ва ўсіх мадэль адказвае “positive” на 99,2% водгукаў і больш, а дакладнасць 50,9-51,5%. Падобна на тое, што мадэль працягвае паслядоўнасць метак замест таго, каб чытаць водгук. Люстраны парадак - + - + не такі чысты, там доля станоўчых адказаў ад 1,0% да 51,5%.

GPT-2 large

На large мая гісторыя пра інструкцыю развалілася. З 4 прыкладамі фармулёўка амаль не мае значэння. Ветлівая на 1,3 пункта вышэйшая за звычайную, без інструкцыі на 0,6 ніжэй. Абедзве няправільныя інструкцыі цяпер крыху горшыя за звычайную, французская на 2,4 пункта і ніжэйшая на 8 наборах з 10. Так што папярэдні раздзел датычыцца толькі medium. Набор прыкладаў усё гэтак жа рухае звычайны промпт ад 53,6% да 87,6%.

На large я паспеў прагнаць толькі 24 парадкі набору 0. Яны ідуць ад 51,6% да 88,3%, але мадэль ламае іншы парадак, чым у medium. + - + - тут працуе нармальна, 75,0-88,3%. Large ламаецца, калі ў 2 апошніх прыкладаў адна метка. Пасля + + - - яна адказвае positive толькі на 2,5-5,2% водгукаў, пасля - - + + на 87,4-96,7%. Чжао з калегамі называюць гэта recency bias: мадэль цягнецца да меткі, якую бачыла апошняй. Гэта тлумачэнне пасуе толькі да large: у medium парадак + - + - заканчваецца адмоўным прыкладам, а мадэль усё роўна кажа positive.

GPT-2 large, набор 0, 24 парадкі, згрупаваныя па метках прыкладаў дакладнасць, % адказ "positive", % 50 70 90 0 50 100 + - + - - + - + - + + - + - - + - - + + + + - -
Калі ў 2 апошніх прыкладаў адна метка, large ставіць яе большасці водгукаў. Чаргаванне, якое пачынаецца са станоўчай меткі і ламала medium, тут працуе нармальна.

Без прыкладаў фармулёўка на large мае вялікае значэнне. Голы промпт атрымлівае 86,4%, ветлівы 84,1%, вялікія літары 78,7%, звычайны 71,9%, эксперт 68,6%. На medium ветлівы быў на 6,9 пункта горшы за звычайны. На large ён на 12,2 пункта лепшы. Але кожны лік без прыкладаў гэта 1 промпт, за якім няма набораў. Я не магу сказаць, колькі з гэтых 18 пунктаў дала фармулёўка, а колькі менавіта гэтая фраза. Гэты голы промпт з 86,4% да таго ж вышэйшы за любы варыянт з 4 прыкладамі на large, дзе найлепшае сярэдняе 65,8%.

Што яшчэ рухала лік

Словы-меткі важнейшыя за ветлівыя словы. З “good” і “bad” medium атрымлівае 68,4%, з “A” і “B” 49,0%, ніжэй за адказ positive на ўсё.

Каліброўка крыху дапамагае medium і мацней large. Чжао з калегамі пытаюцца ў мадэлі пра пусты ўваход накшталт “N/A” і дзеляць імавернасці адказаў на тое, што яна кажа там. Са звычайнай інструкцыяй гэта зрушвае medium з 59,3% да 62,0%, а large з 64,5% да 72,0%, лепш на 7 наборах з 10 у абедзвюх. На промпце medium без прыкладаў выходзіць наадварот, з 60,8% да 55,4%. Пасля папраўкі мадэль кажа positive толькі на 7,7% водгукаў.

Выпадковыя меткі ў прыкладах каштуюць medium 4,2 пункта. Гэта блізка да таго, што Мін з калегамі ў мінулым месяцы паведамілі для большых мадэляў. Перавернутыя меткі каштуюць 6,7 пункта, але medium не вучыцца па іх пераварочваць адказы. Яна проста часцей кажа positive, у 89% выпадкаў.

Чаго я не правяраў

  • Саму GPT-3. Большыя мадэлі цалкам могуць чытаць інструкцыю лепш.
  • Іншыя задачы. Танальнасць водгукаў пра фільмы гэта самы просты выпадак. На задачы, дзе мадэлі патрэбна інструкцыя, каб зразумець, што рабіць, яе выдаленне хутчэй за ўсё нашкодзіць.
  • Больш набораў. 10 набораў паказваюць раскід у 33 пункты, але розніца ў 3 пункты паміж фармулёўкамі застаецца ўнутры шуму. Ветлівая магла б насамрэч быць на 2 пункты лепшай і я б гэтага не ўбачыў.

Для маленькіх мадэляў я цяпер спачатку паспрабую некалькі парадкаў прыкладаў і толькі потым буду чапаць фармулёўку. І інструкцыю я больш не лічу бяспечнай часткай, хоць на large яна была проста нейтральнай.