Gdzieś między Polską a Niemcami, a szczególnie w NRD

Sztuczna inteligencja nas kiedyś zastąpi?

Po dwóch poprzednich odcinkach czytelnikowi może się wydawać, że nie doceniam aktualnego stanu prac nad generatywnym AI, a nawet go wyśmiewam. To nie jest tak. W porównaniu z tym, jak wyglądało automatyczne tłumaczenie dziesięć lat temu, to aktualne to rewelacja. Do generacji tekstów i obrazków można mieć wiele zastrzeżeń, ale to już jest naprawdę coś. Moje uwagi wynikają przede wszystkim z tego, że to wcale nie jest pierwszy hype na AI, a od zawsze miała ona zastąpić człowieka. Prawie tak, jak ta automatyczna generacja kodu z poprzedniej notki.

A było to tak:

  • "Perceptron", czyli sieć neuronową z użyciem "sztucznych neuronów" wymyślono teoretycznie w roku 1943, pierwszy komputer oparty na perceptronach (Mark I Perceptron) zbudowano w roku 1957. Hype na ten "sztuczny mózg" był taki, że przez dłuższy czas wszelkie komputery nazywano "mózgami elektronowymi", i miały one zastąpić człowieka we wszystkim.
Mark I Perceptron
Mark I Perceptron. Źródło: https://americanhistory.si.edu
  • IBM próbował stworzyć "Rozwiązywacz problemów wszelakich" ("General Problem Solver") już w roku 1959. (oczywiście nie wyszło).
  • W sześćdziesiątych i siedemdziesiątych faktyczne osiągnięcia w AI były dość umiarkowane, głównie ze względu na brak mocy obliczeniowej ówczesnych komputerów. Ale hype, chociaż mniejszy, istniał nadal - na przykład w sporej części SF istotną rolę grał duży, inteligentny i samoświadomy komputer komunikujący się z użytkownikami głosowo (na przykład w "Luna to surowa pani" Heinleina).
  • W siedemdziesiątych zdarzył się jednak Cybersyn - projekt który nie został zakończony i raczej nawet gdyby go  zakończyć nie dałby spodziewanych rezultatów, ale na wyobraźnię podziałał.
  • Rozwój AI istotnie przyspieszył w osiemdziesiątych. Rozpoczęto na przykład próby z autonomicznymi pojazdami, zarówno  wojskowymi, jak i cywilnymi. SF pokazywała autonomiczne roboty (np. "Terminator"). Według hype AI miała na początek zastąpić zawody żołnierza i kierowcy.
  • Nawet w takim NRD uważano AI za ratunek dla kraju i prowadzono intensywne (choć w tak naprawdę mało obiecujące) prace nad tym tematem.
  • W dziewięćdziesiątych pojawiły się dostępne nawet dla amatora programy do analizy technicznej kursów giełdowych, oparte na sieciach neuronowych. Hype mówił, że wyeliminują one zawód tradera.
  • W dwutysięcznych hype trochę opadł - prace nad AI posuwały się intensywnie, ale wyraźnie było widać że wyniki sa dość odległe od wygórowanych oczekiwań. Automatyczne tłumaczenie było marne, autonomiczne pojazdy nie nadawały się za bardzo do wypuszczenia ich samodzielnie na drogę, praktycznie działały jedynie zabawki w rodzaju "Furby", albo autonomiczne odkurzacze. A powiedzmy sobie otwarcie, że autonomiczny odkurzacz to poziom trochę lepszego "cybernetycznego żółwia" z sześćdziesiątych.
  • Najnowszy hype na generatywne AI nie jest więc niczym nowym.

Generalnie to prawie każda nowa technologia w trakcie jej rozwoju generuje cykle hype-hate. Tak typowo to ani nie jest z nią tak dobrze jak odczuwa się to  w fazie hype, ani tak źle jak odczuwa się w fazie hate. Nie inaczej jest z AI.

Współczesne AI świetnie nadaje się do wykrywania wzorców w danych wejściowych, tu pojawia się sporo istotnych zastosowań i dokonanych dzięki niej odkryć. AI generatywna jest jednak w fazie over-over-hype. Ona coś już  potrafi, to robi wrażenie, ale realistycznie patrząc to do zastępowania człowieka jest jej bardzo daleko. I to nie jest tak, że wystarczy trochę skorygować implementację, dać szybszy komputer albo więcej pamięci i już - nie, ograniczenie tkwi w samej jej koncepcji. żeby zrobiło się znacząco lepiej potrzeba nowej koncepcji. I to nie będzie rok czy dwa.

Moja prognoza (żadna tam szklana kula czy głęboka futurologia - po prostu będzie tak, jak zawsze): 

  • W najbliższych latach będzie się próbować wtykać generatywną AI wszędzie, gdzie tylko się da. Powstanie trochę w miarę użytecznych narzędzi, ale
  • generalnie efekty tego będą takie sobie, znacznie poniżej oczekiwań.
  • Hype powoli przejdzie w hate.
  • Tymczasem będzie się pracować nad nowymi koncepcjami
  • Cykl się powtórzy. Następny hype będzie za 10-20 lat.

Czyli na Zachodzie bez zmian. Generalnie można spać spokojnie, AI miejsca pracy wam raczej nie zabierze. Jakieśtam, ewolucyjne zmiany w pracy w różnych zawodach na pewno będą, ale nie takie, żeby zaraz połowę pracowników wyrzucać (A jeżeli jakiś zbyt łatwowierny manager mimo wszystko połowę wyrzuci, to wkrótce pożałuje).

A już zwłaszcza nie za wiele zmieni się w zawodzie programisty. CEO Nvidii Jensen Huang uważa, że przyszłe pokolenia w ogóle nie będą musiały uczyć się języków programowania, ale według mnie to zależy od definicji "języka programowania". Pan Huang ma chyba definicję bardzo zawężoną do języków imperatywnych - i tu nawet mógłbym się zgodzić. Programowanie imperatywne to prowadzenie komputera za rączkę, i na dłuższą (ale naprawdę dłuższą, chyba nawet nie za mojego życia) metę powinno to się zmienić. Ale na językach imperatywnych świat się nie kończy, mamy jeszcze bardzo szeroki wybór języków deklaratywnych. Taki na przykład Prolog powstał już w roku 1972, i od początku był uważany za "język sztucznej inteligencji".

Dalej pan Huang stwierdził: "It is our job to create computing technology such that nobody has to program and the programming language is human. Everybody in the world is now a programmer”. Ale jakoś przecież musimy komputerowi (nawet sztucznie inteligentnemu komputerowi) powiedzieć, czego dokładnie od niego chcemy. Zresztą żywym programistom/architektom też musimy to jakoś powiedzieć, i użycie przy tym języka naturalnego od zawsze jest jednym z najpoważniejszych źródeł problemów. Do tego stopnia, że już dziś przy tworzeniu requirementów używamy co prawda języka naturalnego, ale częściowo sformalizowanego (na przykład jest dokładnie zdefiniowane, w jakiej sytuacji piszemy "shall", w jakim "should", a w jakiej "may". Takich reguł jest więcej). Przy formułowaniu requirementów używamy formalnych  notacji matematycznych (np. "6V < Ubatt < 18V"), wzorów matematycznych i diagramów w sformalizowanych notacjach (np. UML czy SysML). Wiele typów tych diagramów potencjalnie daje się automatycznie przekształcić w wykonywalny kod przy użyciu różnych generatorów kodu (BTDT), co według mnie spełnia definicję "języka programowania". Użycie języka naturalnego do programowania uważam za mrzonkę, to nigdy nie działało dobrze i nie będzie dobrze działać.

Ale najśmieszniejsze jest to jego "Everybody in the world is now a programmer". Całkiem podobne hasła towarzyszyły rozposzechnieniu internetu i prostych Authoring Tools. Everybody in the world miał być now kreatywnym muzykiem, grafikiem, pisarzem, poetą, filmowcem, popularyzatorem nauki czy kim tam jeszcze. Dostaliśmy garść wartościowych artystów, i miliony tiktokerów, influencerów i szurów. Nie jestem pewien, czy było warto. Większość ludzi wcale nie chce być artystą albo programistą, a większość tych którzy chcieli by być (zwłaszcza bez włożenia w to wysiłku), wcale się do tego nie nadaje.

TL;DR? Będzie jak zawsze. Zmiany ewolucyjne, nie rewolucyjne.

 

 

-----------------------------------------------------------------------------------------------------------------------

Dotyczy:

Kategorie:Pomyślmy

2 komentarze

Sztuczna inteligencja zastąpi nas, programistów.

Zawodem szczególnie podatnym na zastąpienie przez AI miałby być zawód programisty. Tak przynajmniej można ostatnio usłyszeć i przeczytać w różnych mediach. Zastanówmy się, czy tak naprawdę jest. Bo przecież AI może wygenerować śliczny kod programu na podstawie opisu, co ten program ma robić. Może, prawda? Prawda?

Zacznijmy od tego, że mówimy o kodowaniu, czyli pisaniu tekstu, który po przekształceniu jest wykonywany przez komputer - aktualna AI nie potrafi przecież nic innego niż generowanie tekstów. Tyle że nawet gdyby AI naprawdę wygenerowała nam śliczny i bezbłędny kod, to i tak nie eliminuje to zawodu programisty, a co najwyżej kodera. Programowanie to cały proces, kodowanie to tylko jeden, najmniejszy jego etap. Programowanie z kodowaniem utożsamiają tylko ludzie nie mający o tym pojęcia, co bardziej amatorscy programiści-amatorzy i może jeszcze jakieś dziadowskie firmy programistyczne.

Na przykład u mnie w branży automotive przy tworzeniu oprogramowania obowiązuje norma ISO26262, definiująca proces zwany V-Model. Na obrazku wygląda to tak:

V-model w ISO26262
V-model w ISO26262

Zauważmy, że w tym modelu kod źródłowy (czyli właśnie kodowanie) jest na samym dole diagramu, i nie przypadkiem jest to V-model (ze szpicem w dół), a nie na przykład Λ-model (ze szpicem w górę). Kodowanie jest po prostu najmniej istotnym elementem procesu. Nawet gdyby udało się je całkowicie wyeliminować, pozostałą większość roboty i tak będzie musiał zrobić no kto? Żywy programista oczywiście.

Teraz drugi problem. Załóżmy, że AI naprawdę wygeneruje nam dobry kod, kiedy jej powiemy co ten kod ma robić. W sumie żywemu programiście też musimy powiedzieć, co ten kod ma robić. I tak typowo to nie mówimy mu tego, tylko piszemy w formie requirementów. I tych requirementów do uwzględnienia zawsze trochę jest. Na szczęście nie musimy specyfikować każdego najdrobniejszego szczegółu, bo ten programista taki całkiem głupi nie jest, i z grubsza będzie rozumiał dlaczego pewne rzeczy mają być zrobione tak, a nie inaczej (bo przecież sam jeździ samochodem), zajrzy do dokumentacji procesora (i do erraty też), będzie znał ograniczenia użytej platformy (albo o to zapyta), itp. itd. Inaczej mówiąc: będzie korzystał ze swojej i innych wiedzy o świecie.

No ale AI, jak już wiemy z poprzedniego odcinka, nie ma wiedzy o świecie. I w związku z tym specyfikacja dla niej musi być o wiele bardziej szczegółowa niż dla programisty. I w którymś momencie to przestanie mieć sens - jeżeli będziemy musieli pokazać AI paluszkiem każdy szczegół, to po jaką cholerę nam takie AI? Szybciej napiszemy to sami, bez kombinowania z tłumaczeniem (nawiasem mówiąc tak samo bywa z żywymi programistami, sytuacja że lepiej napisać samemu niż komuś tłumaczyć nie jest znowu taka rzadka). I jakoś o podobnym przypadku już pisałem przy marzeniu lat 60-tych, czyli "dowodzeniu poprawności programów": Jeżeli wyspecyfikujemy nasz program bardzo dokładnie, to w zasadzie powinno dać się z tego zrobić implementację, nawet bez AI.

Kolejny problem z requirementami jest taki, że tak normalnie to one powinny przychodzić od klienta. Tyle  że klient bardzo często:

  • Sam nie wie, czego właściwie chce.
  • Przekopiował requirementy z wcześniejszego projektu, a tu niezupełnie pasują.
  • Nie zauważył sprzeczności w requirementach.
  • Nie znał ograniczeń sprzętu.
  • Sam nie rozumie, co właściwie napisał.
  • itp. itd.

Teoretycznie wszystkie takie problemy powinno dać się wyłapać zanim dojdzie do kodowania, ale to jest naprawdę tylko teoria. Zależności jest zbyt wiele, żeby tak się dało przy rozsądnym nakładzie pracy. W praktyce wcale nie tak rzadko programista przy kodowaniu musi sprawdzać, co poeta miał na myśli na którymś w wyższych etapów V-modelu, i czy na pewno jest pewny. (Dygresja: po niemiecku "poezja" to "Dichtung", tak samo jak "uszczelka", co pozwala konstruować mnóstwo bardzo suchych sucharów na takie tematy). Jakoś nie za bardzo potrafię wyobrazić sobie AI pytające autora inputu o uszczegółowienie albo uściślenie, to tak nie działa, tego ona nie potrafi.

Jest w tym wszystkim kolejny aspekt: To nie jest tak, że napiszemy kod raz a dobrze, i tak on zostanie na wieki. Zawsze wkrótce okazuje się, że coś trzeba tam jednak zrobić inaczej, wcale niekoniecznie dlatego, że nasz kod jest zły. Gdy piszemy ręcznie, poprawiamy te parę linii, aktualizujemy specyfikację tych paru testów, robimy nowe testy zmienionego kawałka i już. Tymczasem przy AI musimy kazać jej wygenerować całość od nowa, a ona jest niedeterministyczna z założenia i wygeneruje nam całkiem nowy kod, całkiem inny niż poprzedni. No i lokalność zmiany szlag trafia, trzeba od nowa robić pełne testy całości, review kodu (full, nie tylko delta), certyfikację, czy co tam jeszcze jest wymagane. Jeżeli norma wymaga pokrycia testami wszystkich branchy w kodzie, to musimy mocno pozmieniać nasze testy. I tak dalej, i tak dalej. Przecież z czymś takim nie da się pracować, to generuje więcej roboty niż było bez tego.

Oczywiście moglibyśmy generować z AI raz, a potem poprawiać w kodzie generowanym. Tyle że to nie za wiele daje - wtedy musimy analizować nie swój kod. I po kilku poprawkach i tak kod będzie w sporym stopniu nasz, nie AI. I wtedy po co nam to AI? Współczesne IDE generują nam szkielety zawartości nowych plików kodu i mogą wtykać snippety kodu w żądane miejsca, i to robić to deterministycznie - na cholerę nam bawić się w analizę intencji AI?

A już całkowicie pomijam fakt, że taki AI generator kodu absolutnie nie da się certyfikować na safety, głównie ze względu na jego indeterminizm. A w szczególności nie da się spełnić wymagań normy ISO26262 dla narzędzi programistycznych. Znaczy każdy safety-relevant kod wygenerowany przez AI musi przejść pełny review.

Teraz napiszę kontrowersyjną rzecz: Cała historia informatyki to historia walki o zastąpienie  kodowania przez programistę generacją kodu. Było to tak:

  • Na początku komputery programowało się wpisując kody rozkazów do pamięci przy pomocy klawiatury binarnej, a później ósemkowej. Mi też się kiedyś coś podobnego zdarzyło (tyle że bez tej klawiatury), to był prawdziwy hardkor, tak się nie da pracować z kodem dłuższym niż parędziesiąt rozkazów.
  • Dlatego wymyślono assembler. Już nie potrzeba było hardkorowego kodera, każdy głupi mógł wpisać tekstowo op-cody rozkazów i program już działał. No ale tu też przy większych programach zaczęły się problemy z ogarnięciem kodu. (Zauważmy, że assembler jest de facto generatorem kodu - na podstawie tekstu generuje kod maszynowy)
  • Dlatego do assemblera dodano makra, tworząc makroassembler. Teraz każdy głupi mógł sobie radykalnie skrócić program używając makrosów. No ale tu też przy większych programach zaczęły się problemy z ogarnięciem kodu. (Zauważmy, że warstwa makro jest generatorem kodu - na podstawie tekstu makrosów generuje tekst rozkazów assemblera).
  • Dlatego powstał język wysokiego poziomu nazwany COBOL. Teraz każdy user mógł sobie napisać program w języku naturalnym, a komputer zrobił wszystko, czego ten user chciał. Przynajmniej jeżeli chciał zrobić jakieś operacje na bazie danych. No ale nie wszystko robi się na bazie danych. No i ta "naturalność" języka była dość relatywna. (I oczywiście taki kompilator jest generatorem kodu maszynowego).
  • Dlatego powstały inne języki programowania, na przykład FORTRAN, Algol 60, Algol 68, Pascal czy C. Teraz każdy głupi mógł sobie łatwo napisać program. (Zauważmy, że każdy kompilator czy interpreter jest też generatorem kodu, a do dziś wiele kompilatorów nie generuje wprost kodu maszynowego tylko kod źródłowy w assemblerze. A pierwsza faza kompilacji programu w C to preprocesor, czyli ewidentny generator kodu).
  • Potem zmniejszać ilość kodu miała koncepcja modularności / obiektowości (Modula2, C++, Java, ...). Jakościową zmianą w generacji kodu były na przykład Templates w C++.
  • Dalej pojawiły się pierwsze próby z low-code: wszystkie te języki Visual-XXX (Basic, C++, ...). Tu użytkownik miał po prostu narysować aplikację GUI, i napisać tylko troszeczkę kodu w callbackach. Resztę robił generator. To nawet jakoś działało.
  • Następna próba była - moim zdaniem - najbardziej obiecująca ze wszystkich: Model Driven Development. Kod miał być wygenerowany z modelu, co potencjalnie mogło zintegrować generację w cały proces tworzenia oprogramowania. To nawet działało (BTDT), ale nie było pozbawione wad i nie było dla każdego.
  • Po opadnięciu hype na MDD poszło to wszystko raczej w stronę konfiguracji w jakimś narzędziu i generacji kodu z templates tekstowych albo czysto programowej. Tak działa cały ten AUTOSAR i to jest mix no-code z low-code.
  • Do niedawna na topie było właśnie low-code i no-code, ale to są głównie scamy - przychodzi jakiś akwizytor, na pokazie w parę minut wyklikuje działającą aplikację, i managerstwo się na to łapie. A potem się okazuje, że wyklikać da się tylko to, co producent wbudował do środka, a zrobienie w tym czegoś więcej jest od cholernie trudnego do niemożliwego.
  • Od dłuższego już czasu IDE wrzuca szkielety kodu do nowo tworzonych plików, albo ma jakiś katalog snippetów do różnych zadań. To też jest forma generatora kodu. No i zawsze można przekopiować coś ze StackOverflow albo z jakiegoś starego projektu.
  • No i teraz wchodzi, cała na biało, generacja kodu przez AI. No i tak serio serio to ma być wreszcie to ultymatywne rozwiązanie, żeby już nic nie kodować? Przecież to już chyba ósma dekada tego eliminowania kodowania, że już-tylko-chwila i programiści staną się niepotrzebni. Prawie jak z tą syntezą termojądrową.

Podsumowanie: Jak na razie nie ma się czym ekscytować (no chyba że przez cały czas kodujesz maski do aplikacji bankowych, ale wtedy i bez AI lepiej się trochę przebranżowić). Jak będzie dalej? Moja prognoza w następnym odcinku.

-----------------------------------------------------------------------------------------------------------------------

Dotyczy:

Kategorie:Pomyślmy

Skomentuj

Sztuczna inteligencja nas zastąpi

Strasznie dawno nic nie pisałem, ale wcale nie dlatego, że nie mam o czym. Tematów jest mnóstwo, tyle że freelancerstwo zajmuje mi bardzo dużo czasu. Trudno się opędzić od klientów i projektów. Po drodze potłumaczyłem angielskojęzyczne notki WO o wojnie z jego substacka na niemiecki, pomagając sobie DeepL-em i tłumaczem Googla, i to był jeden z triggerów tej notki.

Drugim triggerem był nieustanny szum medialny o tym, jak to AI zastąpi mnóstwo zawodów, a w szczególności programistów. Akurat poczytałem trochę jak te aktualne implementacje AI są skonstruowane, połączyłem tę wiedzę z obserwacjami efektów ich działania i oto moje wnioski. Dla ustalenia uwagi: Piszę nie o AI generalnie, tylko o realnie istniejących implementacjach generujących teksty i obrazy.

Najpierw parę słów o tym, jak to (w uproszczeniu) działa. I to jest tak: To wszystko są modele językowe. Taka AI "wie" tylko tyle, że w kontekście K po słowie S1 z prawdopodobieństwem P następuje słowo S2. A "wie" to tylko z tekstów, którymi została nakarmiona. Tam nie ma żadnej wiedzy o świecie, tam są tylko słowa, słowa, słowa.

Dla zrozumienia konsekwencji mały rys historyczny. W początku wieku XX pojawił się prąd artystyczny zwany dadaizmem. Dadaiści odrzucali logikę, racjonalizm i estetykę kapitalizmu. Zamiast tego wszystkiego proponowali nonsens i nieracjonalność, a to wszystko miało być tylko "sztuką dla sztuki". Jedną z ich koncepcji było tworzenie wierszy przez losowanie słów. Tu cytat z "Manifestu Dada":

TO MAKE A DADAIST POEM

Take a newspaper.
Take some scissors.
Choose from this paper an article of the length you want to make your poem.
Cut out the article.
Next carefully cut out each of the words that makes up this article and put them all in a bag.
Shake gently.
Next take out each cutting one after the other.
Copy conscientiously in the order in which they left the bag.
The poem will resemble you.
And there you are – an infinitely original author of charming sensibility, even though unappreciated by the vulgar herd.

ABY STWORZYĆ DADAISTYCZNY WIERSZ

Weź gazetę.
Weź nożyczki.
Wybierz z tej gazety artykuł o długości, jaką chcesz nadać swojemu wierszowi.
Wytnij artykuł.
Następnie ostrożnie wytnij każde ze słów, które składają się na ten artykuł i włóż je wszystkie do woreczka.
Delikatnie potrząśnij.
Następnie wyjmij każdy wycinek jeden po drugim.
Kopiuj sumiennie w kolejności, w jakiej opuściły woreczek.
Wiersz będzie przypominał ciebie.
I oto jesteś - nieskończenie oryginalny autor o czarującej wrażliwości, choć niedoceniany przez wulgarne stado.

Oczywiście pełna losowość kolejności słów dawała wiersze nie nadające się nawet do czytania, więc w praktyce wycinano raczej całe linie tekstu źródłowego a nie pojedyncze słowa. Przy tym podejściu efekty bywały nawet nie najgorsze, ale sensu już programowo nie było w nich żadnego. Zwracam uwagę na proroczą linię Manifestu "The poem will resemble you" - za chwilę do niej wrócę.

Potem pojawiły się komputery, i zaczęto próbować robić podobne rzeczy na komputerze, bawiono się w to już na mainframe, pamiętam też takie programiki na Commodorka. Komputer zastąpił żmudne wycinanie nożyczkami i umożliwił ograniczenie losowości tak, żeby tekst wychodził jako-tako poprawny gramatycznie, ale sensu nadal nie było w nim żadnego.

Obecne implementacje AI idą mały krok dalej - robią ten (nadal w sporym stopniu losowy) tekst takim, jak statystycznie piszą ludzie, i to jest właśnie "The poem will resemble you". Niestety nie "an infinitely original author of charming sensibility" tylko "the average human", ale to zawsze coś. Zauważmy jednak, że nadal sens w tym wszystkim pojawia się co najwyżej jako efekt uboczny tego naśladowania człowieka - bo nie ma skąd inąd się wziąć. W moim rozumieniu sens musi brać się z wiedzy o świecie, a tu jej nie ma. Zresztą nie tylko w moim rozumieniu tak jest - na przykład Trurl tworząc Elektrybałta zaczął od wymodelowania całej historii Wszechświata, a dopiero na tej podstawie zabrał się za wierszokletstwo.

Ktoś może argumentować, że przecież taka AI ma pełen dostęp do Internetu, i może sobie wszystko wyguglać. Hmm, a powiedz, jaki procent wyników twoich zapytań googla jest sensowne i odpowiada na twoje pytanie? I w jaki sposób oddzielasz wyniki sensowne/prawdziwe (czyli zgodne ze światem rzeczywistym) od bezsensownych/nieprawdziwych? Nie przypadkiem na podstawie twojej wiedzy o świecie? Bez wiedzy o świecie możesz najwyżej powiedzieć który wynik jest podobny do twojego modelu językowego, a który nie. Nic więcej. (Dokładnie ten sam błąd popełniają ludzie twierdzący "Po co mam się uczyć, skoro mam googla?". A jakim cudem chcesz potem zrozumieć wyguglaną odpowiedź?).

Pewien czas temu można było zauważyć spory hype na automatyczne tłumaczenie. Ponieważ poćwiczyłem takie tłumaczenie na notkach WO, mogę coś na ten temat powiedzieć (przynajmniej o niemieckim jako języku docelowym). I to jest tak: Rzeczywiście oszczędza to sporo tej fizycznej roboty z tworzeniem gramatycznie poprawnych zdań w języku docelowym. Ale nadal nie można wyniku puścić bez sprawdzenia i poprawienia. Przy tym DeepL ma całkiem inny styl niż tłumacz Googla. Google gubi się w zdaniu częściej niż DeepL, ale w innych miejscach i zawsze warto porównać obie wersje. Który jest lepszy stylistycznie to kwestia gustu. Za to Google potrafi poprawnie użyć indirekte Rede, przy DeepL nigdy tego nie zaobserwowałem.

Ale oba mają ten sam problem: Brak im wiedzy o świecie. Na przykład kiedy w kontekście lat 90-tych pada nazwisko Clinton bez imienia, dla obu jest to "ona" (Hilary, a nie Bill), bo tak było w nowszych tekstach, którymi je uczono. Trzeba wyłapywać i poprawiać odniesienia do popkultury, zwłaszcza nie najnowszej (cytaty, tytuły), bo oba jej po prostu nie znają. Idiomy też są dla nich poważnym wyzwaniem. Itp., itd. Znaczy: AI usprawnia pracę tłumacza, ale nie da rady go zastąpić.

Jeszcze anegdotka: WO w swojej notce przetłumaczył (prawdopodobnie automatycznie) z rosyjskiego na angielski fanfik Girkina o puczu Prigożina w stylu "Trudno być Bogiem" Strugackich. Nie chciałem robić tłumaczenia tłumaczenia, więc znalazłem oryginał rosyjski (nie chcę linkować, jak ktoś chce zobaczyć, to proszę ręcznie: na "t.me/s/strelkovii" poszukać "Трудно быть чёртом"), przetłumaczyłem go na niemiecki obydwoma tłumaczami, i oba miały ten sam problem - były tam wspomniane "Серые Роты", czyli "Szare Roty" (albo "kompanie", takie oddziały wojska). Formy liczby mnogiej słów "Рота" i "Рот" ("pysk") są identyczne, i obu AI-tłumaczom wychodziły "die Grauen Mäuler" ("Szare Pyski" albo "Szare Mordy"). Dla informacji: W tłumaczeniu Ireny Piotrowskiej były to "Szare Oddziały".

Wróćmy do prądów artystycznych sprzed 100 lat: Dadaiści proponowali również losowość w sztukach wizualnych, np. kolaże z przypadkowych wycinków. AI też to potrafi, w praktyce dość wiernie oddając produkt generacji tekstów na obrazku. Na tyle wiernie, że wszystkie problemy aktualnych AI generujących teksty można jeszcze łatwiej zauważyć na tych obrazkach. A zwłaszcza gdy poprosimy o obrazek czegoś z tekstem, na przykład plakatu filmowego albo pudełka z setem Lego - AI umieszcza na nim grupy pikseli przypominające litery i słowa, ale nigdy nie są to sensowne i czytelne napisy. To tylko wizualnie przypomina to, co robią w tym miejscu ludzie, ale AI nie "rozumie" ich sensu.

Set LEGO według AI
Set LEGO według AI

Znaczy ja doceniam, że udało się zimplementować przerobienie opisu słownego w spójny wizualnie obrazek a nie dadaistyczny kolaż, ale to, co jest na tym obrazku, to nadal nie ma wielkiego sensu, właśnie ze względu na brak wiedzy o świecie generatora. Na przykład jak poprosić o obrazek o "katastrofie elektrowni w Czarnobylu", dostajemy elektrownię z kominami. Przy zwrotach typu "wycierać kurze" albo nazwach w rodzaju "Mniszek lekarski" dostajemy "jak sobie mały Kazio wyobraża znaczenie takich zwrotów".

"Wytrzyj kurze" według AI
"Wytrzyj kurze" według AI
"Mniszek lekarski" według AI
"Mniszek lekarski" według AI

O, z tym "małym Kaziem" to jest ciekawy trop. Porównajmy sobie aktualne AI z człowiekiem. Według mnie porównanie z dzieckiem w jakimś wieku nie jest dobre, bo z jednej strony AI ma braki w wiedzy o świecie podobne do nie za dużego dziecka, ale z drugiej ma o wiele większą sprawność językową niż wielu dorosłych. Ale powiem, że poznałem w życiu trochę dorosłych ludzi na podobnym poziomie kognitywnym co ta AI. Znaczy powtarzających zasłyszane/przeczytane zdania jak z gazety na podstawie słów kluczowych, jednak bez ich weryfikacji i zrozumienia ich znaczenia. Podejrzewam, że większość moich czytelników też takich ludzi spotkała, przynajmniej w sieci. Zazwyczaj są to zwolennicy różnego rodzaju teorii spiskowych oraz partii populistycznych. Czyż na przykład płaskoziemcy nie wydają wam się skonstruowani podobnie do aktualnego AI? Znaczy że mają tylko model językowy bez modelu świata? (A może te dwa modele po prostu nie są u nich połączone?)

EDIT 2024.04.06: Przypomniałem sobie mojego znajomego Putinverstehera i ogólnie teoriospiskowca. On jest inżynierem automatykiem, urodził się w Polsce, ale od prawie 50 lat jest w Niemczech. I on pewnego razu przy dyskusji na temat znajomości języka powiedział "Ja potrafię powiedzieć więcej (po niemiecku), niż rozumiem". Wtedy mnie to rozbawiło jako oczywista bzdura, ale teraz się nad tym zastanawiam. Czyżby był to właśnie przypadek modelu językowego nie połączonego z modelem świata?

Teraz przejdźmy do konsekwencji dla rynku pracy: Widzę jeden zawód, który może z marszu zostać zastąpiony przez AI (i nie jest to zawód dziennikarza): Bezproblemowo można zastąpić wszystkich tych tekściarzy wymyślających opisy do produktów w katalogach sprzedaży wysyłkowej. To jest przecież właśnie beztreściowe blablabla, trochę podobne do tego, jak piszą ludzie. Taka generacja opisów do sprzedawanych produktów jest już dostępna dla każdego przy tworzeniu aukcji na eBayu. I powiem szczerze, że ja takich tekstów tworzyć nie umiem, AI jest tu ode mnie o wiele lepsze. Ale czy można nazwać to inteligencją?

Przy innych zawodach nie jest już tak prosto - w większości produkowane teksty muszą mieć jednak jakieś odniesienia do świata zewnętrznego. AI potrafi świetnie "lać wodę", ale kiedyś trzeba jednak dojść do konkretów. Przedstawiciele paru zawodów już zdążyli się przejechać na próbach użycia AI do ich pracy, bo generowane teksty nie wytrzymały konfrontacji z rzeczywistością (na przykład że AI zmyśliło paragrafy kodeksu karnego). Jakaś dziennikarka bardzo ładnie podsumowała swoje próby z AI: "Te teksty brzmią jakby napisał je golden retriever". To może zastąpić stażystów piszących zapchajdziury, ale nie dziennikarza piszącego o czymś konkretnym.

Podejrzewam, ze większość moich czytelników interesuje przede wszystkim pytanie, czy AI zlikwiduje ich miejsca pracy jako programistów, jednak notka zrobiła mi się na tyle długa, że ten temat wrzucę do drugiego odcinka. A może jeszcze będzie i trzeci, z moimi prognozami na przyszłość.

-----------------------------------------------------------------------------------------------------------------------

Dotyczy:

Kategorie:Pomyślmy

Skomentuj