W części pierwszej wpisu (tutaj link) przedstawiliśmy pokrótce model Transformer – jego architekturę oraz ideę związaną z działaniem. Jak wspomnieliśmy stanowił on rewolucję w NLP, zaś jego elementy wykorzystywane są we współczesnych modelach językowych takich jak GPT oraz BERT. W tej części zajmiemy się już konkretnym modelem językowym, jakim jest GPT-2 oraz przedstawimy, w jaki sposób wykorzystujemy go w Literackiej do generowania tekstów.
GPT-2 jest kolejnym po BERT-cie opisywanym przez nas modelem językowym. Został opracowany przez zespół badaczy z OpenAI. Jako ciekawostkę warto wspomnieć, że jednym z założycieli tej organizacji jest nie kto inny jak Elon Musk, współzałożyciel przedsiębiorstw PayPal, SpaceX, Tesla, Neuralink i Boring Company. Jest to model generatywny dla języka naturalnego. Jego nazwa pochodzi od ‘Genarative Pre-Training for Language Understanding’. Podobnie jak BERT jego architektura oparta jest na elementach modelu Transformer. Poniżej przypomnienie uproszczonego schematu działania Transformera:
Architektura BERT opierała się na połączonych szeregowo encoderach modelu Transformer. W przypadku GPT są to szeregowo połączone decodery. Ilustruje to poniższy rysunek:
W zależności od liczby warstw decoderowych wyróżniamy cztery warianty modelu GPT-2. I tak model “Small” składa się z 12 warstw, a co za tym idzie zawiera 117 milionów trenowalnych parametrów. “Extra Large” zaś to model 48 warstwowy posiadający ponad 1,5 miliarda parametrów do wytrenowania. W przypadku rozpatrywanego przez nas zagadnienia wystarczający okazał się model 12-to warstwowy. Warianty poszczególnych modeli w zależności od ich wielkości są widoczne poniżej:
Zasadniczą różnicą względem modelu BERT jest przyjmowanie przez model GPT pojedynczych tokenów, nie zaś całych sekwencji w jednym czasie. Pre-trening modelu opiera się również na uczeniu nienadzorowanym i wymaga do tego dużych korpusów tekstowych. Finalnie model wykorzystywany jest do generowania tekstu.
“Surowy” model GPT generuje dalszy tekst na podstawie otrzymanych na wejściu zdań. W naszym przypadku założeniem było generowanie notek opisujących książkę na podstawie jej kategorii literackiej oraz słów kluczowych. Takie podejście w znacznym stopniu zwiększa kontrolę nad otrzymanym na wyjściu wynikiem. Słowa kluczowe stanowią w naszym przypadku wyselekcjonowane z utworu NER-y. Aby osiągnąć taki cel należało wykonać fine-tuning pre-trenowanego modelu GPT-2 dla języka polskiego, czyli dostroić model do tak sprecyzowanego zadania. Z dostrajaniem łączy się oczywiście przygotowanie odpowiedniego datasetu. W naszym przypadku było to ponad 500 tys. fragmentów książek zawierających od 400 do 600 słów wraz z przypisanymi im kategoriami literackimi (biografia, fantastyka, historyczna, horror, kryminał, obyczajowa, podróżnicza, reportaż, romans) oraz wyodrębnionymi z nich NER-ami. Z 12 warstw pre-trenowanego modelu 6 dolnych zamroziliśmy i na przygotowanym datasecie trenowaliśmy pozostałe 6 warstw. Pre-trenowany model sam w sobie ma już dużo wiedzy o języku, a trenowanie jedynie połowy parametrów znacznie zredukowało czas treningu. Po otrzymaniu takiej dawki danych model jest w stanie generować tekst na podstawie słów kluczowych oraz kategorii utworu.
Trochę się pobawiliśmy, próbując z tekstów wygenerowanych przez sztuczną inteligencję wyczytać przyszłość. W październiku będziemy na Targach Książki we Frankfurcie i w związku z tym daliśmy AI następujące słowa kluczowe: targi, książki, Frankfurt, prezentacja, naukowiec, gość, badania, pasje, stoisko, hotel, pokój, droga, recepcjonista, ludzie. Poprosiliśmy o tekst z kategorii “reportaż”. I oto, co sztuczna inteligencja na tej podstawie wygenerowała:
- „Jeśli chodzi o targi książki we Frankfurcie nad Menem, mogę śmiało powiedzieć, że po raz pierwszy miałem okazję zetknąć się z czymś tak odmiennym od wszystkiego, co do tej pory znałem. Jestem przekonany, że moja prezentacja spotka się z bardzo pozytywnym odbiorem zarówno wśród zagranicznych gości, jak i wśród polskich czytelników. To wszystko sprawia, że czuję się spełniony jako naukowiec zajmujący się badaniami literaturoznawczymi”.
- „Na szczęście okazało się, że można tam spotkać wielu ciekawych ludzi – takich, którzy chętnie dzielą się swoimi pasjami czy zainteresowaniami. W związku z tym postanowiłem skorzystać z okazji i podzielić się ze światem moimi ulubionymi tematami książkowymi”.
- „Okazało się, że na stoisku z książkami nie było nikogo oprócz mnie. Wstałem i ruszyłem w dalszą drogę. Gdy dotarłem do hotelu, okazało się, że hotel jest już zamknięty. Poprosiłem recepcjonistę, żeby dał mi znać, kiedy będę miał wolny pokój”.
Autor tekstu: Sebastian Jankowski
BIBLIOGRAFIA:
[1] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever. Language Models are Unsupervised Multitask Learners, (2019).
[2] Jay Alammar. The Illustrated GPT-2 (Visualizing Transformer Language Models), http://jalammar.github.io/illustrated-transformer/, (2019).
[3] Ivan Lai. Conditional Text Generation by Fine Tuning GPT-2, https://towardsdatascience.com/conditional-text-generation-by-fine-tuning-gpt-2-11c1a9fc639d, (2021).