HumanRank

Dziś przeczytałem wpis o human.json i stwierdziłem, że temat jest godny pełnowymiarowego wpisu. Nie dlatego, że jest ciekawy, ale dlatego, jak bardzo nieprzemyślany i słabo wykonany jest to pomysł. Uprzedzam, że będzie stronniczo i trochę mi się uleje.

W skrócie, LLMosceptycy wpadli na pomysł, żeby ludzie zaczęli dodawać plik JSON, w którym będą wskazywać URLe do innych treści (stron) tworzonych przez ludzi. Do tego dodatek do przeglądarki, który pokaże ilu ludzi wskazało odwiedzaną stronę na tworzoną przez człowieka i jaka jest odległość (ilu pośredników) względem naszej strony.

Czyli – cytując wytłuszczenia ze strony projektu – autor strony deklaruje się jako człowiek i umieszcza plik. Następnie poręcza za inne strony. I rozszerza scope poręczeń.

Jeśli komuś się z czymś to kojarzy, to – jeśli jeszcze nie zorientował się na podstawie tytułu wpisu – jest to w założeniu bardzo podobne do PageRank stworzonego przez Google. Może i Google stwierdziło, że to nie działa dobrze, jest podatne na manipulacje SEO i wycofało się z projektu, ale tym razem się uda. OK, jest różnica, bo aktualnie human.json nie uwzględnia wag. Ale to wczesna wersja, więc możliwe, że wszystko przed nami.

Wersja Google była o tyle lepsza/prostsza, że nie wymagała osobnego pliku i używała po prostu linków ze strony. Ale to nic, wiadomo, że wszyscy ludzie są techniczni, tu sobie nagłówek dopiszą, tam plik wygenerują. Na ironię zakłada wybór formatu JSON, który jest pomyślany jako przetwarzalny przez automaty i niezbyt przyjazny ludziom.

Dalsze wady pomysłu? Ależ proszę bardzo. Rozwiązanie jest podatne na manipulację. Nie ma żadnego problemu, żeby kupić kilka(-naście, -set) stron, umieścić na nich human.json, który będzie linkować do pozostałych. Zapewne będą miały wyższą ilość potwierdzeń, niż wiele stron tworzonych przez ludzi.

Kolejny problem to założenie, że wszyscy pieczołowicie będą utrzymywać swoje pliki. O ile z dodaniem pliku nie ma większego problemu, to z czasem domeny wygasają, zmieniają właścicieli. Po kilku latach może być na nich zupełnie inna treść. Znam to doskonale i z linków na blogu, i z czytnika RSS. W przypadku PageRank był jeden opiekun, który dbał o jakość wskaźnika.

Czy to koniec problemów? Na pewno nie. Na pewno znajdą się chętni do „wymiany linków” tj. wzajemnego potwierdzenia swojego człowieczeństwa. Pamiętacie sprzedaż linków? Gdyby pomysł jakimś cudem się przyjął (w co nie wierzę) to handel linkami powróci w wielkim stylu. Tym razem linkami w human.json.

Czym więc jest human.json, albo jakie widzę jego niezamierzone skutki? Przede wszystkim jest deklaracją nie lubię LLM. Do tego oczywiście każdy ma prawo. Ale czy człowiek musi polegać na automatycznym, algorytmicznym wskaźniku z przeglądarki, żeby ocenić czy treść jest wartościowa? Wydaje mi się to dziwne.

Ostatni niezamierzony skutek, który widzę, to tworzenie kolejnego bąbelka. Bo czy strony ludzi, z których poglądami się nie zgadzamy, trafią do human.json równie często, jak tych, z którymi się zgadzamy? Szczerze w to wątpię.

Instrukcje były niejasne

Czasem na LinkedIn, z którego coraz mniej korzystam, pojawi się ciekawa dyskusja[1]. Zaczęło się od LLMów i stwierdzenia, że AI nie umie dotrzymać tajemnicy, każdy model LLM w końcu ujawni coś, czego nie powinien. Trochę wzięło mnie na filozofowanie i szukanie analogii, efektem jest myśl, którą parę osób uznało za trafną/interesującą, więc, żeby nie zginęła, niech będzie i tu.

Generalnie większość ludzi jest zgodna, że faktycznie tak jest i LLMy „ciekną” sekrety. Trochę zeszło na no ale tu wyraźne instrukcje były, żeby tego nie robił. Czyli klasyczne, że nie LLMy się nie nadają do danego zastosowania, tylko, a może zły prompt, a może zły model, a może tory złe…

Widzę to nieco inaczej, a różnica jest fundamentalna. Podobnie jak w LLMy nie kłamią trzeba przestać traktować LLMy jak maszyny deterministyczn czy myślące. W zamian trzeba cały czas pamiętać, że pod spodem jest to jednak złożony, ale proces stochastyczny.

Dlatego instrukcje, które dajemy LLMom nie są przepisem na ciasto, który zostanie odtworzony przez człowieka. Nie są algorytmem/programem, który zostanie wykonany precyzyjnie w określony, zawsze taki sam sposób, jak ma to miejsce w tradycyjnych programach. Czyli nie są dla „odbiorcy”, czyli modelu LLM ścisłą instrukcją, choć wydaje nam się, że są.

Czym zatem są? Wydaje mi się, że najbliższą analogią, którą znamy z życia są… przykazania religijne. Wg twórcy są precyzyjne, nie ma problemu z ich przestrzeganiem i powinny być przestrzegane. W praktyce jest z tym różnie. Mogą być różnie zrozumiane, zinterpretowane, czy wreszcie po prostu zignorowane. Nawet jeśli większość wyznawców ich przestrzega, to znajdą się przypadki, gdy nie są przestrzegane. Analogicznie zachowują się LLMy. Co któreś uruchomienie, w odpowiednich okolicznościach, znajdzie się taka instancja LLMa, która „złamie”[2] otrzymane instrukcje. I według mnie należy to po prostu przyjąć jako cechę rozwiązań opartych o LLMy.

[1] Bo ważne jest, z kim się rozmawia, nie gdzie.
[2] Cudzysłów, bo złamanie oznaczałoby konieczność zrozumienia, co nie zachodzi.

LLMy nie kłamią

Sztuczna inteligencja, skrótowo zwana AI wciska się ostatnio wszędzie, czy sens jest, czy go nie ma. Tak naprawdę zaczęliśmy ostatnio określać tym mianem głównie LLMy, ale nie zawsze tak było. Ktoś pamięta takie rzeczy jak algorytmy genetyczne? Niemniej, obecnie jeśli ktoś mówi o AI, to najprawdopodobniej chodzi mu o LLM.

W każdym razie, jak bumerang w wypowiedziach powraca temat „uczłowieczania” AI. Często słyszymy zwrotu typu AI kłamie, AI się myli czy AI rozumie polecenia. Ostatnio spotkałem się z bardzo ciekawym moim zdaniem stanowiskiem, że LLMy nie mogą kłamać. Teraz pewnie wszyscy starają się przypomnieć sobie ostatni niezaprzeczalny dowód na kłamstwo LLMa. Jednak tak naprawdę chodzi o coś innego, niż błędna, niezgodna ze stanem faktycznym odpowiedź. Kwestia jest bardziej filozoficzna. Żeby kłamać, AI musiałoby wiedzieć, co jest prawdą i świadomie udzielić innej odpowiedzi. I podejście takie bardzo mi się podoba.

Tymczasem LLM nie wie, co to jest prawda, nie myśli, nie rozumie pytania. Na podstawie dostarczonych wcześniej danych, na których został wytrenowany, generuje tekst, który ma pasować do zadanego pytania. Czyli: weź wprowadzony tekst, przetwórz go na dane wejściowe, których umiesz używać. Następnie wygeneruj pasującą odpowiedź w swoich danych/języku, przetwórz ją na tekst. Tak w skrócie, bo jest jeszcze prompt, który – podobnie jak pytanie – jest danymi wejściowymi i potrafi wpływać na wynik. Ale znowu, nie w formie rozumienia go przez AI tak, jak my rozumiemy rozumienie. No i AI nie działa deterministycznie. Nawet, jeśli zwykle daje dość powtarzalne (najbardziej prawdopodobne) wyniki.

Łatwiej to wszystko chyba zrozumieć ludziom, którzy bawili się algorytmami genetycznymi czy łańcuchami Markowa tak z ćwierć wieku temu. A niestety odruchowo łatwo jest przypisywać cechy ludzkie czemuś, co zachowuje się podobnie do człowieka[1]. Nawet, jeśli zasada działania jest zupełnie inna.

Dlatego następnym razem, zamiast powiedzieć: LLM kłamie lepiej rzec LLM wygenerował odpowiedź, która nie ma pokrycia w rzeczywistości. Ale nie mam złudzeń, nikt tak mówić nie będzie. Lubimy uproszczenia.

[1] Pewnie nawet można pokusić się o twierdzenie, że mamy – jako gatunek – tendencję do zrównywania komunikacji z myśleniem czy inteligencją. Podobno często niesłyszący traktowani są jako upośledzeni intelektualnie. Przy LLMach byłoby odwrotnie: składa zdania, znaczy myśli.