Metoda „Tree of Thoughts” (ToT) to nowe podejście do wnioskowania z wykorzystaniem modeli językowych, które generalizuje popularne podejście „Chain of Thought” do podpowiadania modelom językowym. Pozwala to na eksplorację nad spójnymi jednostkami tekstu („myślami”), które służą jako pośrednie kroki w rozwiązywaniu problemów.
ToT pozwala modelom językowym na celowe podejmowanie decyzji, poprzez rozważanie wielu różnych ścieżek rozumowania i samoocenę wyborów, aby zdecydować o następnym kroku działania. Pozwala to również na przewidywanie lub cofanie się, kiedy jest to konieczne, aby dokonać globalnych wyborów.
Eksperymenty pokazały, że ToT znacznie poprawia zdolności rozwiązywania problemów przez modele językowe na trzech nowych zadaniach wymagających niebanalnego planowania lub wyszukiwania: Gra w 24, Twórcze Pisanie i Mini Krzyżówki. Na przykład, w grze w 24, podczas gdy GPT-4 z podpowiedzią chain-of-thought rozwiązał tylko 4% zadań, metoda ToT osiągnęła skuteczność na poziomie 74%.
ToT jest zainspirowane badaniami nad ludzkim rozwiązaniem problemów, które sugerują, że ludzie przeszukują kombinatoryczną przestrzeń problemów – drzewo, w którym węzły reprezentują częściowe rozwiązania, a gałęzie odpowiadają operatorom, które je modyfikują. Którą gałąź wybrać, zależy od heurystyk, które pomagają nawigować w przestrzeni problemów i kierują rozwiązującego problem w kierunku rozwiązania.
W jaki sposób analizowane i wybierane są częściowe rozwiązania? Jakie heurystyki są stosowane?
W ramach metody „Tree of Thoughts” (ToT), częściowe rozwiązania, nazywane „myślami”, są generowane i oceniane na podstawie kilku strategii.
- Dekompozycja myśli: ToT wykorzystuje właściwości problemu do projektowania i dekompozycji pośrednich kroków myślowych. W zależności od problemu, myśl może być kilkoma słowami, linią równania lub całym akapitem planu pisania.
- Generator myśli: Rozważane są dwie strategie generowania kandydatów na następny krok myślowy:
- Próbkowanie niezależnych myśli z pomysłu CoT (Chain of Thought). Działa to lepiej, gdy przestrzeń myśli jest bogata, a próbki i.i.d. prowadzą do różnorodności.
- Proponowanie myśli sekwencyjnie za pomocą „propose prompt”. Działa to lepiej, gdy przestrzeń myśli jest bardziej ograniczona, więc proponowanie różnych myśli w tym samym kontekście unika duplikacji.
- Ocenianie stanów: Dany jest zestaw różnych stanów, oceniający postęp, jaki one czynią w kierunku rozwiązania problemu, służący jako heurystyka dla algorytmu wyszukiwania, aby określić, które stany należy dalej eksplorować i w jakiej kolejności. ToT korzysta z modelu językowego do celowego rozumowania o stanach.
- Algorytm wyszukiwania: Na koniec, ToT łączy te zdolności generowania i oceny myśli z algorytmami wyszukiwania, takimi jak przeszukiwanie wszerz (BFS) lub przeszukiwanie w głąb (DFS), które umożliwiają systematyczne eksplorowanie drzewa myśli z przewidywaniem i cofaniem.
Wszystko to pozwala na bardziej świadome podejmowanie decyzji i planowanie w procesie rozwiązywania problemów, co jest kluczowym elementem metody „Tree of Thoughts”.
Jak działa przeszukiwanie wszerz w oparciu o BFS? Jakiego algorytmu dotyczy skrót BSF?
BFS to skrót od Breadth-First Search, co w tłumaczeniu na język polski oznacza przeszukiwanie wszerz. Jest to algorytm, który służy do przeszukiwania lub przeglądania struktur danych, takich jak drzewa lub grafy.
Algorytm BFS rozpoczyna przeszukiwanie od korzenia (lub dowolnego innego węzła grafu) i odwiedza wszystkie węzły na danym poziomie przed przejściem do następnego poziomu. Innymi słowy, najpierw odwiedza wszystkie węzły bezpośrednio połączone z wybranym węzłem, a następnie odwiedza wszystkie węzły, które są na drugim poziomie połączeń, i tak dalej.
W kontekście metody „Tree of Thoughts”, BFS może być używany do systematycznego przeszukiwania drzewa myśli, odwiedzając wszystkie „myśli” na danym poziomie, zanim przejdzie do następnego poziomu. Pozwala to na szerokie, ale płytkie przeszukiwanie przestrzeni problemów, co może być szczególnie przydatne, gdy istnieje wiele możliwych ścieżek rozumowania, które należy rozważyć.
Warto zauważyć, że BFS jest jednym z wielu algorytmów przeszukiwania, które mogą być używane w tym kontekście. Inne popularne algorytmy to Depth-First Search (DFS, przeszukiwanie w głąb) i A* (algorytm heurystyczny używany do znalezienia najkrótszej ścieżki w grafie). Wybór konkretnego algorytmu zależy od specyfiki problemu i charakterystyki przestrzeni problemów.
Oto diagram przedstawiający działanie metody „Tree of Thoughts”:
Na początku mamy punkt startowy. Z tego punktu generowane są różne „myśli” (Thought 1, Thought 2, Thought 3). Każda z tych myśli może prowadzić do kolejnych myśli (na przykład Thought 1 prowadzi do Thought 1a i Thought 1b).
Każda z tych myśli jest następnie oceniana (Evaluate 1a, Evaluate 1b, itd.). Na podstawie tych ocen podejmowana jest ostateczna decyzja.
W jaki sposób mogę wykorzystać ToT? Czy mogę zastosować wytyczne ToT w ChatGPT?
Metoda „Tree of Thoughts” (ToT) może być wykorzystana w różnych kontekstach, w których modele językowe są używane do rozwiązywania problemów wymagających planowania lub wyszukiwania. Może to obejmować różne dziedziny, takie jak programowanie, twórcze pisanie, rozwiązywanie zagadek logicznych, a nawet gry strategiczne.
Jeśli chodzi o zastosowanie ToT w ChatGPT, jest to możliwe, ale wymagałoby to pewnych modyfikacji w sposobie, w jaki model jest trenowany i wykorzystywany. Obecnie, większość modeli językowych, w tym ChatGPT, jest trenowana za pomocą podejścia zwane „Chain of Thought” (CoT), które polega na generowaniu tekstu sekwencyjnie, słowo po słowie.
Aby zastosować ToT, model musiałby być w stanie generować i oceniać „myśli” jako całość, a następnie wykorzystywać te myśli do planowania i podejmowania decyzji. To wymagałoby prawdopodobnie modyfikacji w architekturze modelu, a także w sposobie, w jaki jest on trenowany.
W praktyce, ToT może być trudne do zaimplementowania w obecnych modelach językowych bez znacznej modyfikacji. Jednak koncepcje i techniki z ToT mogą być inspiracją dla nowych podejść do trenowania i wykorzystywania modeli językowych, które są bardziej zdolne do celowego rozumowania i planowania.
Czyli ToT to framwork. Jeżeli chciałbym napisać właśną aplikację w języku python to jakie komponenty musiałbym zastosować?
Tak, „Tree of Thoughts” (ToT) można postrzegać jako framework lub strategię dla modeli językowych, aby poprawić ich zdolności do rozwiązywania problemów. Aby zaimplementować ToT w swojej aplikacji Python, musiałbyś skupić się na kilku kluczowych komponentach:
- Model językowy: Na początek potrzebujesz modelu językowego, który będzie generował „myśli”. Możesz użyć istniejących modeli, takich jak GPT-3 lub GPT-4, dostępnych za pośrednictwem API OpenAI, lub trenować własny model na specyficznym dla siebie zestawie danych.
- Generator myśli: Będziesz potrzebować funkcji, która może generować kandydatów na następny krok myślowy. Może to obejmować próbkowanie niezależnych myśli lub proponowanie myśli sekwencyjnie.
- Ocenianie stanów: Będziesz potrzebować funkcji, która ocenia postęp, jaki poszczególne myśli czynią w kierunku rozwiązania problemu. To może wymagać dodatkowego modelu, który jest trenowany do oceny myśli, lub może to być heurystyka oparta na regułach.
- Algorytm wyszukiwania: Na koniec, będziesz potrzebować algorytmu wyszukiwania, który może systematycznie przeszukiwać drzewo myśli, przewidując i cofając się, gdy jest to konieczne. Może to być standardowy algorytm, taki jak przeszukiwanie wszerz (BFS) lub przeszukiwanie w głąb (DFS), lub bardziej zaawansowany algorytm, taki jak A*.
Pamiętaj, że implementacja ToT w praktyce może być skomplikowana i wymagać dużej ilości eksperymentowania i dostosowywania. Ale jeśli jesteś zainteresowany badaniem nowych sposobów wykorzystania modeli językowych do rozwiązywania problemów, ToT może być dobrym punktem wyjścia.
Jak działa algorytm wyszukiwania BFS i DFS.
Oto diagram przedstawiający strukturę drzewa, które może być przeszukiwane za pomocą algorytmów BFS (Breadth-First Search, przeszukiwanie wszerz) lub DFS (Depth-First Search, przeszukiwanie w głąb):
W przypadku algorytmu BFS, przeszukiwanie zaczynałoby się od węzła „Start”, a następnie odwiedzałoby wszystkie węzły na tym samym poziomie (Node A, Node B, Node C) zanim przejdzie do następnego poziomu (Node D, Node E, Node F, Node G, Node H, Node I) i tak dalej.
W przypadku algorytmu DFS, przeszukiwanie również zaczynałoby się od węzła „Start”, ale zamiast odwiedzać wszystkie węzły na tym samym poziomie, DFS najpierw „zagłębia” się w drzewo, odwiedzając Node A, a następnie Node D i Node J, zanim wróci do Node E, a następnie wróci do Node B i tak dalej.
Metoda „Chain of Thought (CoT)”.
Oto diagram przedstawiający działanie metody „Chain of Thoughts” (CoT):
W metodzie CoT, proces rozumowania rozpoczyna się od punktu startowego i następnie przechodzi sekwencyjnie przez serię „myśli” (Thought 1, Thought 2, Thought 3, Thought 4), aż do osiągnięcia końca. Każda kolejna „myśl” jest generowana na podstawie poprzedniej, tworząc liniowy łańcuch myśli.
Metoda „Self Consistency with Chain of Thought (CoT-SC)”
Podobnie jak w metodzie CoT, proces rozumowania w CoT-SC rozpoczyna się od punktu startowego i przechodzi sekwencyjnie przez serię „myśli” (Thought 1, Thought 2, Thought 3, Thought 4), aż do osiągnięcia końca.
Jednak w CoT-SC, każda „myśl” jest również poddawana sprawdzeniu samospójności („Self Consistency Check”). To oznacza, że model sprawdza, czy nowo wygenerowana „myśl” jest spójna z poprzednimi „myślami” w łańcuchu. Jeśli nie, model może zdecydować się na wygenerowanie nowej „myśli”, która jest bardziej spójna z poprzednimi.
W jaki sposób generowana jest końcowa odpowiedź w metodzie „Self Consistency with Chain of Thoughts (CoT-SC)”?
W metodzie „Self Consistency with Chain of Thoughts (CoT-SC)” końcowa odpowiedź jest generowana na podstawie najgłębiej zbadanego stanu. W przypadku, gdy istnieje wiele równie głęboko zbadanych stanów, wybierany jest ten, który został zbadany jako pierwszy.
W praktyce, po zakończeniu procesu przeszukiwania, model wybiera stan, który uważa za najbardziej obiecujący, na podstawie oceny samospójności i innych heurystyk. Następnie ten stan jest „renderowany” do postaci końcowej odpowiedzi.
Warto zauważyć, że wybór końcowego stanu nie jest doskonały i istnieje miejsce na poprawę. Na przykład, czasami model może znaleźć prawidłowe rozwiązanie, ale jego heurystyki oceny stanu mogą uznać niektóre słowa za „niemożliwe” do wypełnienia, co prowadzi do przycięcia tego stanu z procesu przeszukiwania.
Ponadto, autorzy metody zauważają, że lepsze heurystyki do przycinania podczas przeszukiwania DFS są kluczowe dla skutecznego rozwiązywania problemów. W niektórych przypadkach, wyłączenie mechanizmu przycinania może prowadzić do gorszych wyników ogólnych, ale pozwala na znalezienie prawidłowego rozwiązania dla niektórych problemów, które nie mogły być rozwiązane przy użyciu metody CoT-SC z przycinaniem.
Podsumowując
Metoda „Tree of Thoughts” (ToT) to strategia stosowana w modelach językowych, takich jak GPT-3, do rozwiązywania problemów wymagających planowania lub wyszukiwania. W ToT, model generuje i ocenia różne „myśli” lub kroki, a następnie używa algorytmu wyszukiwania, aby znaleźć najlepsze rozwiązanie.
Algorytm BFS (Breadth-First Search, przeszukiwanie wszerz) i DFS (Depth-First Search, przeszukiwanie w głąb) to standardowe algorytmy używane do przeszukiwania drzewa myśli w ToT. BFS odwiedza wszystkie węzły na tym samym poziomie zanim przejdzie do następnego poziomu, podczas gdy DFS „zagłębia” się w drzewo, odwiedzając najpierw najgłębszy dostępny węzeł.
Metoda „Chain of Thoughts” (CoT) to inna strategia, w której model generuje „myśli” sekwencyjnie, tworząc liniowy łańcuch myśli. Wersja tej metody z samospójnością, znana jako CoT-SC, dodaje dodatkowy krok, w którym model sprawdza, czy nowo wygenerowana „myśl” jest spójna z poprzednimi „myślami” w łańcuchu.
Wszystkie te metody mogą być używane w różnych kontekstach, w których modele językowe są używane do rozwiązywania problemów, takich jak programowanie, twórcze pisanie, rozwiązywanie zagadek logicznych, a nawet gry strategiczne. Jednak ich implementacja w praktyce może być skomplikowana i wymagać dużej ilości eksperymentowania i dostosowywania.