Негізгі мазмұнға өту
OpenAI

2025 ж. 13 қараша

ЗерттеуЖарияланым

Сирек тізбектер арқылы нейрондық желілерді түсіну

Олардың қалай жұмыс істейтінін жақсырақ түсіну үшін біз модельдерді қарапайымырақ, ізі оңай қадамдармен ойлауға үйреттік.

Жүктелуде…

​​Нейрондық желілер бүгінгі ең қабілетті AI жүйелерінің негізі болып отыр, бірақ оларды түсіну әлі де қиын. Біз бұл модельдерді айқын, қадам-қадам нұсқаулармен жазбаймыз. Оның орнына олар миллиардтаған ішкі байланыстарын, яғни «салмақтарын», белгілі бір тапсырманы меңгергенше реттеу арқылы үйренеді. Біз оқыту ережелерін жобалаймыз, бірақ пайда болатын нақты мінез-құлықтарды емес, соның нәтижесінде адам оңай шеше алмайтын тығыз байланыстар торы қалыптасады. 

Біз интерпретациялануды қалай түсінеміз

AI жүйелері қабілеттірек болып, ғылым, білім беру және денсаулық сақтау салаларындағы шешімдерге шынайы әсер ете бастаған сайын, олардың қалай жұмыс істейтінін түсіну аса маңызды. Интерпретациялану — модельдің неге дәл осындай нәтиже шығарғанын түсінуге көмектесетін әдістер. Бұған жетудің көптеген жолы бар. 

Мысалы, ойлайтын модельдер соңғы жауапқа жету жолында өз жұмысын түсіндіруге ынталандырылады. Ойлау тізбегінің интерпретациялануы модель мінез-құлқын бақылау үшін осы түсіндірмелерді пайдаланады. Бұл бірден пайдалы: қазіргі ойлайтын модельдердің ойлау тізбектері алдау сияқты алаңдатарлық мінез-құлықтарға қатысты ақпарат бере алатын сияқты. Алайда бұл қасиетке толық сүйену — осал стратегия, әрі уақыт өте келе бұл бұзылуы мүмкін.

Ал осы жұмыстың негізгі бағыты болып табылатын механистік интерпретациялану модельдің есептеулерін толықтай кері талдап шығуға тырысады. Әзірге оның тікелей пайдасы азырақ болды, бірақ теория жүзінде ол модель мінез-құлқының толықтау түсіндірмесін ұсына алады. Модель мінез-құлқын ең ұсақ деңгейде түсіндіруге ұмтылу арқылы механистік интерпретациялану азырақ жорамал жасап, бізге көбірек сенім бере алады. Бірақ төмен деңгейлі детальдардан күрделі мінез-құлық түсіндірмелеріне дейінгі жол әлдеқайда ұзақ әрі қиын.

Интерпретациялану бірнеше маңызды мақсатты қолдайды, мысалы қадағалауды жақсартуға және қауіпті не стратегиялық тұрғыдан сәйкес келмейтін мінез-құлықтың ерте ескерту белгілерін беруге көмектеседі. Ол сондай-ақ ауқымдалатын қадағалау, қарсылас оқыту және red-teaming сияқты басқа қауіпсіздік шараларымызды толықтырады. 

Бұл жұмыста біз модельдерді көбіне оларды түсіндіруді жеңілдететіндей етіп үйрете алатынымызды көрсетеміз. Біз өз жұмысымызды тығыз желілерді постфактум талдауға үмітті толықтыру деп қараймыз. 

Бұл — өте өршіл бәс; біздің жұмысымыздан ең қуатты модельдеріміздің күрделі мінез-құлықтарын толық түсінуге дейінгі жол ұзақ. Соған қарамастан, қарапайым мінез-құлықтарда біздің әдіспен үйретілген сирек модельдерде түсінікті де, сол мінез-құлықты орындауға жеткілікті де шағын, ажыратылған тізбектер бар екенін байқаймыз. Бұл механизмдерін түсіне алатын ірірек жүйелерді үйретуге болатын іске асатын жол барын меңзейді.

Жаңа тәсіл: сирек модельдерді үйрену

Механистік интерпретациялану жөніндегі бұрынғы жұмыстар тығыз, шатасқан желілерден бастап, оларды ажыратуға тырысты. Мұндай желілерде әрбір жеке нейрон мыңдаған басқа нейронмен байланысқан. Көптеген нейрон бірнеше бөлек функция атқаратын сияқты, сондықтан оларды түсіну мүмкін емес болып көрінеді. 

Ал егер біз ажыратылған нейрондық желілерді, нейрондары әлдеқайда көп, бірақ әр нейронында бірнеше ондаған ғана байланыс бар күйде үйретсек ше? Онда пайда болған желі қарапайымырақ әрі түсінуге жеңілірек болуы мүмкін. Бұл — біздің жұмысымыздағы негізгі зерттеу бәсі.

Осы қағиданы басшылыққа ала отырып, біз GPT‑2 сияқты қолданыстағы тілдік модельдерге өте ұқсас архитектурасы бар тілдік модельдерді бір шағын өзгеріспен үйреттік: модель салмақтарының басым көпшілігін нөл болуға мәжбүрлейміз. Бұл модельді өз нейрондары арасындағы мүмкін байланыстардың өте аз бөлігін ғана пайдалануға шектеді. Біздің пайымдауымызша, бұл қарапайым өзгеріс модельдің ішкі есептеулерін едәуір ажыратады.

Тығыз тізбектер мен сирек тізбектерді салыстыратын диаграмма. Тығыз нұсқада көптеген өзара қосылған сызықтары бар екі қатар түйін көрсетілген, ал сирек нұсқада сол орналасым сақталғанымен, байланыстар азырақ әрі таңдаулырақ.

Қалыпты тығыз нейрондық желілерде әр нейрон келесі қабаттағы әр нейронмен байланысқан. Біздің сирек модельдерде әр нейрон келесі қабаттағы аз ғана нейронмен байланысады. Бұл нейрондарды да, тұтас желіні де түсінуді жеңілдетеді деп үміттенеміз.

Интерпретациялануды бағалау

Біз сирек модельдеріміздің есептеулері қаншалықты ажыратылғанын өлшегіміз келеді. Біз модельдің түрлі қарапайым мінез-құлықтарын қарастырып, әр мінез-құлыққа жауапты бөліктерін — біз оларды тізбектер деп атаймыз — бөліп ала аламыз ба, соны тексердік.

Біз қарапайым алгоритмдік тапсырмалар топтамасын қолмен іріктедік. Әрқайсысы үшін модельді тапсырманы әлі де орындай алатын ең кіші тізбекке дейін қырқып, сол тізбектің қаншалықты қарапайым екенін қарастырдық. (Толығырақты біздің мақаладан(жаңа терезеде ашылады) қараңыз.) Үлкенірек әрі сирегірек модельдерді үйрету арқылы біз қабілеті арта түсетін және тізбектері барған сайын қарапайым болатын модельдер жасай алатынымызды байқадық.

X осінде модель мүмкіндігі (алдын ала оқыту шығыны), ал Y осінде интерпретациялануы (қырқылған тізбек өлшемі) көрсетілген шашырау диаграммасы. Нүктелер әртүрлі өлшем мен сиректік деңгейіндегі модельдерді білдіреді, түсі жалпы параметрлер санын, ал маркер өлшемі нөлден өзге параметрлер санын көрсетеді. Жебелер жоғары оң жақ бағытты «жақсырақ» деп белгілейді.

Біз модельдер бойынша интерпретациялануды мүмкіндікпен салыстырып көрсетеміз (төменгі сол жақ жақсырақ). Сирек модельдің бекітілген өлшемі үшін сиректікті арттыру — көбірек салмақты нөлге теңестіру — мүмкіндікті азайтады, бірақ интерпретациялануды күшейтеді. Модель өлшемін ұлғайту бұл озық шекті сыртқа жылжытады, бұл әрі қабілетті, әрі интерпретацияланатын үлкенірек модельдер құра алатынымызды аңғартады.

Мұны нақтылау үшін Python кодымен үйретілген модель жолды дұрыс тырнақша түрімен толықтыруы керек тапсырманы қарастырайық. Python тілінде ‘hello’ бір тырнақшамен аяқталуы тиіс, ал “hello” қос тырнақшамен аяқталуы керек. Модель мұны жолды ашқан тырнақша түрін есте сақтап, соңында соны қайта шығару арқылы шеше алады.

Біздің ең жақсы интерпретацияланатын модельдеріміз дәл осы алгоритмді іске асыратын ажыратылған тізбектерді қамтитын сияқты.

Сирек трансформердегі тізбектің мысалын көрсететін диаграмма. Онда “(” және “circuits” сияқты кіріс токендеріне жауап ретінде нақты нейрондар мен назар бастарының қалай белсенетіні, оң және теріс салмақтар, көбейтулер, сызықтық емес түрленулер, MLP мен назар қабаттары арасындағы байланыстар белгіленген жолдармен көрсетіліп, соңында шығыс токендерінің ықтималдықтарына ұласады.

Жолды бір тырнақшамен бе, әлде қос тырнақшамен бе аяқтау керегін болжайтын сирек трансформердегі тізбектің мысалы. Бұл тізбек небәрі бес резидуал арнаны (тік сұр сызықтар), 0-қабаттағы екі MLP нейронын және 10-қабаттағы бір назар сұрау-кілт арнасын және бір мән арнасын пайдаланады. Модель (1) бір резидуал арнада бір тырнақшаларды, ал екіншісінде қос тырнақшаларды кодтайды; (2) мұны MLP қабаты арқылы кез келген тырнақшаны анықтайтын бір арнаға және бір мен қос тырнақшаны ажырататын басқа арнаға түрлендіреді; (3) арадағы токендерді елемеу, алдыңғы тырнақшаны табу және оның түрін соңғы токенге көшіру үшін назар операциясын қолданады; және (4) сәйкес жабушы тырнақшаны болжайды.

Біздің анықтамамыз бойынша, жоғарыда көрсетілген дәл сол байланыстар тапсырманы орындауға жеткілікті — модельдің қалған бөлігін алып тастасақ та, осы шағын тізбек жұмыс істей береді. Олар сондай-ақ қажет: осы бірнеше қырды жою модельдің қателесуіне әкеледі.

Біз біршама күрделірек мінез-құлықтарды да қарастырдық. Мұндай мінез-құлықтарға арналған тізбектерімізді (мысалы, төменде көрсетілген айнымалыны байланыстыру) толық түсіндіру қиынырақ. Сонда да біз модель мінез-құлқын болжай алатын салыстырмалы түрде қарапайым ішінара түсіндірмелерге қол жеткізе аламыз.

Python тіліндегі get_neighbors функциясындағы сирек трансформер тізбегінің мысалын көрсететін диаграмма. current = set() деген екі меншіктеу жақшаға алынған, ал түсті жебелер current айнымалысының әр кездесуін циклдегі қолданылуымен байланыстыру үшін қай назар бастары (Q/K/V индекстерімен белгіленген) белсенетінін көрсетеді.

Толығырақ емес берілген тағы бір тізбек мысалы. current деп аталатын айнымалының түрін анықтау үшін бір назар операциясы айнымалы атауын ол анықталған кезде set() токеніне көшіреді, ал кейінгі басқа операция түрді set() токенінен айнымалының кейінгі қолданылуына көшіреді, соның арқасында модель келесі дұрыс токенді шығара алады.

Алдағы жол

Бұл жұмыс — модель есептеулерін түсінуді жеңілдету деген ауқымды мақсатқа қарай жасалған ерте қадам. Бірақ алда әлі ұзақ жол бар. Біздің сирек модельдеріміз озық модельдерден әлдеқайда кіші, әрі олардың есептеулерінің үлкен бөлігі әлі түсіндірілмеген. 

Келесіде біз әдістерімізді ірірек модельдерге ауқымдауды және модельдердің мінез-құлқының көбірек бөлігін түсіндіруді көздейміз. Қабілетті сирек модельдердегі күрделірек ой қорытуға негіз болатын тізбек үлгілерін тізімдеу арқылы біз озық модельдерді зерттеуді дәлірек бағыттауға көмектесетін түсінік қалыптастыра алар едік.

Сирек модельдерді үйретудің тиімсіздігін еңсеру үшін біз екі жол көреміз. Бірі — сирек модельдерді нөлден үйретудің орнына, бар тығыз модельдерден сирек тізбектерді бөліп алу. Негізінде тығыз модельдерді өндіріске енгізу сирек модельдерге қарағанда тиімдірек. Екінші жол — интерпретациялану үшін модельдерді үйретудің тиімдірек тәсілдерін әзірлеу; мұндай тәсілдерді өндіріске енгізу оңайырақ болуы мүмкін.

Мұндағы нәтижелеріміз бұл тәсілдің қабілеті жоғарырақ жүйелерге міндетті түрде таралатынына кепіл емес екенін ескеріңіз, бірақ бұл бастапқы нәтижелер үміт күттіреді. Біздің мақсатымыз — модельдің сенімді түрде интерпретациялай алатын бөлігін біртіндеп кеңейту және болашақ жүйелерді талдауды, жөндеуді және бағалауды жеңілдететін құралдар жасау.

Авторлар

Leo Gao, Achyuta Rajaram, Jacob Coxon, Soham V. Govande, Bowen Baker, Dan Mossing