Yapay zeka ve programlamada son bölüm

Orijinal kaynak: CSDN

Görüntü kaynağı: Sınırsız AI tarafından oluşturuldu

Bu yılın başlarında, Matt Welsh programlamanın sona erdiğini duyurdu. ACM Communications'da şunları yazdı:

Geleneksel "program yazma" fikrinin ölmekte olduğuna inanıyorum, aslında, bildiğimiz kadarıyla çok özel uygulamalar dışında herkes için, çoğu yazılım programlamanın yerini eğitimli AI sistemleri alacak. Yalnızca "basit" programlara ihtiyaç duyulan bazı durumlarda (sonuçta, her şey GPU kümelerinde çalışan yüz milyarlarca parametreden oluşan modeller gerektirmez), programların kendileri elle kodlanmak yerine doğrudan AI tarafından oluşturulacaktır.

Birkaç hafta sonra, bir konuşmada Wales ölüm gözlemlerini genişletti. Mezara giden sadece programlama sanatı değil, bir bütün olarak bilgisayar bilimidir. Tüm bilgisayar bilimleri "mahkumdur". (Aşağıdaki resim konuşmanın ekran görüntüsüdür.) )

Bu üzücü mesajların ileticileri kedere boğulmuş gibi görünmüyor. Welsh bir bilgisayar bilimi öğretmeni ve uygulayıcısı olmasına rağmen (Harvard, Google, Apple ve başka yerlerde), bir sonraki adıma geçmeye istekli görünüyor. "Her neyse, kod yazmak berbat!" Dedi.

Post-programlamanın geleceği konusunda o kadar iyimser değilim. Her şeyden önce, şüpheliyim. Makinelerin ilginç hesaplama problemlerini kendi başlarına çözmeyi öğrenmeleri için eşiği geçtiğimizi sanmıyorum. Henüz buna yakın olduğumuzu ya da doğru yönde ilerlediğimizi düşünmüyorum. Dahası, bakış açımın yanlış olduğu ortaya çıkarsa, dürtüm boyun eğmek değil, direnmektir. Bir yandan, yeni AI derebeyimizi hoş karşılamıyorum. Benden daha iyi programcılar olduklarını kanıtlasalar bile, kod editörümü ve derleyicimi kullanmaya devam edeceğim, teşekkürler. "Programlama berbat mı?" Benim için uzun zamandır bir neşe ve ilham kaynağı oldu. Dünyayı anlamak için de değerli bir araç olduğunu düşünüyorum. Bir fikri koda indirgeyene kadar anlayıp anlamadığımdan asla emin değilim. Bu öğrenme deneyiminden yararlanmak için, sadece bazı sihirli kelimeler söylemek ve Aladdin'in AI lambasından bir cin çağırmak yerine programı gerçekten yazmak zorunda kaldım.

Büyük Dil Modeli

Programlanabilir makinelerin kendi programlarını yazabileceği fikri, bilgi işlem tarihinde derinden kök salmıştır. Charles Babbage, analitik bir makine planını tartışırken 1836 gibi erken bir tarihte bu olasılığı ima etti. Fortran 1957 yılında piyasaya sürüldüğünde resmi adı "FORTRAN Otomatik Kodlama Sistemi" idi. Belirtilen amacı, bilgisayarların "problemleri kendileri için kodlaması ve insan kodlayıcılar kadar iyi (ancak hatasız) programlar üretmesi"dir.

Fortran, programlama hilelerini (veya hatalarını) ortadan kaldırmaz, ancak süreci daha az sıkıcı hale getirir. Daha sonraki diller ve diğer araçlar daha fazla iyileştirme getirdi. Ve tam otomatik programlama hayali hiçbir zaman boşa çıkmadı. Makineler programlamaya çoğundan daha uygun görünüyor. Bilgisayarlar metodik, kurallara bağlı, titiz ve gerçektir - tüm bu özellikler (doğru veya yanlış) uzman programcılarla ilişkilidir.

İronik olarak, artık programlama görevlerini üstlenmeye hazır olan AI sistemleri garip bir şekilde bilgisayarlara benzemiyor. Kişilikleri Komutan Data'dan çok Deanna Troi'ye benziyor. Mantıksal tutarlılık, nedensel akıl yürütme ve ayrıntılara dikkat onların güçlü noktaları değildir. Derin düşünceler üzerine kafa yoruyor gibi göründüklerinde inanılmaz derecede parlak anları vardır, ancak aynı zamanda şaşırtıcı başarısızlık potansiyeline de sahiptirler - bariz, mantık hataları. Bana eski bir espriyi hatırlatıyorlar: insanlar hata yapar ve işleri gerçekten berbat etmek için bir bilgisayar gerekir.

En son AI sistemine Büyük Dil Modeli (LLM) denir. Diğer son AI icatlarının çoğu gibi, beynin yapısından ilham alan çok katmanlı bir yapı olan yapay sinir ağları üzerine inşa edilmiştir. Bir ağın düğümleri biyolojik nöronlara benzer ve düğümler arasındaki bağlantılar, sinyallerin bir nörondan diğerine iletildiği bağlantı noktaları olan sinaps görevi görür. Egzersiz ağı, bağlantının gücünü veya ağırlığını ayarlayabilir. Bir dil modelinde eğitim, ağa büyük miktarda metin zorlanarak yapılır. İşlem tamamlandığında, birleştirme ağırlıkları eğitim metninin dil özellikleri hakkında ayrıntılı istatistikleri kodlar. En büyük modelde, ağırlık sayısı 100 milyar veya daha fazladır.

Bu durumda, model terimi yanıltıcı olabilir. Bu terim, ölçekli modelleri veya model uçak gibi minyatür modelleri ifade etmez. Bunun yerine, bilimde yaygın olarak bulunan matematiksel modeller gibi tahmine dayalı modellere atıfta bulunur. Atmosferik modellerin yarının hava durumunu tahmin etmesi gibi, dil modelleri de bir cümledeki bir sonraki kelimeyi tahmin eder.

En ünlü büyük ölçekli dil modeli, geçen sonbaharda halka sunulan ve büyük ilgi gören ChatGPT'dir. Kısaltma GPT Gee Pee Tee: Dilim sürekli olarak bu üç kafiyeli heceye takılıyor. Diğer AI ürünlerinin Bart, Claude, Llama gibi sevimli isimleri vardır; Keşke GPT'yi aynı ruhla yeniden adlandırabilseydim. Ben buna Geppetto derdim ve ünsüzlerin desenini yansıtıyor. GPT, Generative Pre-Trained Transformer anlamına gelir; Sistemin sohbet versiyonu, konuşma HMI'sı ile donatılmıştır. ChatGPT, yapay zekayı bir avuç zengin teknoloji şirketinin kontrolünden kurtarmak için 2015 yılında kurulan OpenAI tarafından geliştirildi. OpenAI, bu görevi zengin bir teknoloji şirketi haline geldiği noktaya kadar başarıyla yerine getirdi.

ChatGPT, üslubu, iyi konuşma yeteneği, İngilizce'deki akıcılığı ve diğer dilleri ile hem takdire şayan hem de şok edicidir. Chatbot ünlü yazarları taklit edebilir, şakalar yapabilir, aşk mektupları yazabilir, şiir çevirebilir, spam yazabilir, öğrencilere ev ödevlerinde "yardım edebilir" ve siyasi yanlış bilgiler için yanlış bilgiler uydurabilir. İyi ya da kötü, bu dil becerileri inanılmaz teknolojik gelişmeleri temsil ediyor. Bir zamanlar anlaşılır bir cümle kurmakta zorlanan bilgisayarlar birdenbire kelimelerin ustası oldular. GPT'nin söyledikleri doğru olabilir veya olmayabilir, ancak neredeyse her zaman iyi ifade edilmiştir.

ChatGPT piyasaya sürüldükten kısa bir süre sonra, dil üzerindeki ustalığının programlama dillerine kadar uzandığını görünce şaşırdım. Modelin eğitim kümesi yalnızca birden çok doğal dili değil, aynı zamanda GitHub gibi genel depolardan büyük miktarda program kaynak kodunu da içeriyor gibi görünüyor. Bu kaynağa dayanarak, GPT komutlara dayalı yeni programlar yazabilir. Bunu şaşırtıcı buldum çünkü bilgisayarlar girdileri konusunda çok seçici ve acımasızlar. Bilgisayarlarda bazen yazım hataları gibi küçük hatalar olsa da, insan okuyucular bir cümleyi anlamakta zorlanırlar. Ancak bilgisayar bir virgül veya uyumsuz parantez ile bile girdi alırsa, bozuk kusacaktır. Potansiyel olarak istatistiksel veya olasılıksal özelliklere sahip dil modellerinin, gerekli doğruluğu birkaç satırın ötesinde sürdürmesi pek olası görünmemektedir.

Bu konuda yine yanılmışım. Büyük dil modellerinde önemli bir yenilik olan dikkat mekanizması bu sorunu çözer. ChatGPT'yi kendim denemeye başladığımda, gerçekten de dikkatsiz dilbilgisi hataları olmadan programlar oluşturabileceğini çabucak keşfettim.

Ancak bunu başka sorunlar izledi.

Kelime Merdivenini Tırmanmak

Bir makineyle sohbet etmek için oturduğunuzda, hemen garip bir soruyla karşı karşıya kalırsınız: "Ne hakkında konuşmalıyız?" ChatGPT programlama yeteneklerini adil bir şekilde ölçen bir konu arıyorum. Hesaplama yoluyla çözülebilecek bir problem istiyorum, ancak bu, büyük dil modellerinin zayıf yönlerinden biri olarak kabul edilen çok fazla aritmetik gerektirmiyor. 150 yıl önce Lewis Carroll tarafından icat edilen ve 20. yüzyılın 90'larında Donald E. Knuth tarafından derinlemesine analiz edilen anagram oyununu seçtim.

Aşağıdaki transkriptte, benim tarafımdaki her değişim BR olarak işaretlenmiştir; Rozet, ChatGPT'nin yanıtını belirten OpenAI logosudur.

Bu cümlelerin ekranda açıldığını gördüğümde - sohbet robotu onları kelimesi kelimesine, biraz düzensiz, sanki düşüncelerimi sıralamak için duruyormuş gibi yazıyor - sistemin İngilizce yeteneği beni hemen şaşırttı. GPT, merdiven kelimesinin tüm temel özelliklerini basit, güçlü bir düzyazı ile listeler: her seferinde bir harfi değiştirerek kelimeden kelimeye geçtiğiniz bir oyun veya bulmacadır, merdivenin her basamağı İngilizce bir kelime olmalıdır ve amaç, başlangıç kelimesinden hedef kelimeye kadar mümkün olan en kısa sırayı bulmaktır. Ben kendim daha iyi açıklayamam. En yararlı olanı COLD-> WARM'ın çalışma örneğidir.

Dil yeteneği izlenimi veren sadece bireysel cümleler değildir. Cümleler, tutarlı bir söylem oluşturmak için bir araya getirilmiş paragraflar halinde düzenlenmiştir. Mükemmel!

Ayrıca, robotun bulanık ve özensiz girdileri işleme yeteneği de dikkate değerdir. İlk sorgum evet veya hayır sorusu olarak formüle edildi, ancak ChatGPT bunu doğru bir şekilde bir istek olarak yorumladı: "Bana merdiven kelimesi hakkında ne bildiğinizi söyleyin." İkinci talimatım, KURŞUN ve ALTIN'ın metal olarak değil, kelimeler olarak anlaşılması gerektiğini gösteren herhangi bir tipografik ipucunu görmezden geliyor. Chatbot'un bana simya tarifleri sağlaması gerekiyordu, ancak eksik alıntıları sağladı.

Ancak, tüm bu dilsel ve retorik karmaşıklığı bir kenara bırakırsak, gerçekten test etmek istediğim şey, programın kelime merdiveni problemini çözme yeteneğiydi. Yukarıdaki transkriptteki her iki örnek de web'de bulunabilir, bu nedenle ChatGPT'nin eğitim verilerinde görünmeleri muhtemeldir. Başka bir deyişle, büyük dil modelleri çözümleri oluşturmak yerine basitçe hatırlayabilir. Bu yüzden daha da zor bir ödev verdim:

İlk bakışta, ChatGPT daha önce hiç karşılaşmadığından emin olduğum bir bulmacayı çözerek tekrar zafer kazanmış gibi görünüyor. Ama daha yakından bakın. MARSH -> MARIS, PARIL -> APRIL'DE OLDUĞU GIBI IKI HARFLI BIR IKAME GEREKTIRIR. MARIS ve PARIS'in "geçerli kelimeler" olarak statüsü de sorgulanabilir. Şikayet ettim:

Vay! Robot kaygan itiraflar ve özürler sunuyor, ancak "doğru" merdiven her zamankinden daha çılgın. Görünüşe göre Mother Goose tekerlemesinde Humpty Dumpty ile Scrabble oynuyoruz ve ayrıca "APRCHI'nin bir kelime olduğunu söylüyorum, o bir kelime!" Sonra tüm fayansları dağıtın.

Bu ayrı, benzersiz bir başarısızlık değildir. ChatGPT ile kelime merdivenini çözmeye yönelik tüm girişimlerim, her zaman aynı şekilde olmasa da raydan çıktı. Bir keresinde, REACH'ten GRASP'a bir merdiven istedim. Yapay zeka uzmanları bu çözümü buluyor:

ULAŞMAK -> ÖĞRETMEK -> ŞEFTALI -> BARIŞ -> ADIM -> PARES -> AYRIŞTIRMA -> AYRIŞTIRMA -> AYRIŞTIRMA -> AYRIŞTIRMA -> PARKLAR -> PARKLAR -> PARKLAR -> PARKLAR -> PARES -> ÜZÜM.

Ve bu:

KILIÇ -> KUĞU -> ÖDÜLÜ -> YENIDEN ÇIZ -> YENİDEN ÇİZİM -> YENİDEN ÇİZİM -> YENİDEN ÇİZİM -> YENİDEN ÇİZİM -> YENİDEN ÇİZİM -> GERİ ÖDEME -> ONARIM -> BARIŞ

Şimdi saymayı yeni öğrenen küçük çocuklar gibi gevezelik ediyoruz: "Bir, iki, üç, dört, dört, üç, dört, dört, mavi, on!" "

Şimdiye kadar gösterdiğim tüm sonuçlar ChatGPT sürüm 3.5 ile belgelenmiştir. Mart ayında çıkan yeni ve geliştirilmiş 4.0 sürümünü de denedim. Güncellenen robot aynı sevimli güveni yayıyor, ancak korkarım ki aynı eğilimlere sahip ve sıradan tutarsızlığa düşüyor:

Merdiven, tüm kurallara uyarak dört adımla iyi başlar. Ama sonra yapay zekanın dikkati dağılır. PLAGE'DEN PAGES'A GEÇMEK, DÖRT HARFLI BIR IKAME GEREKTIRIR. SONRA, BIR KELIME OLMAYAN (BILDIĞIM KADARIYLA) VE DIZILER DOĞRUDAN SAYFALARDAN PARE'LERE GIDEBILDIĞI IÇIN BURADA ZATEN GEREKLI OLMAYAN PASLAR VAR. Bunu daha fazla aptallık izledi. Yine de, PLAGE ile ilgili bilgi notunu takdir ediyorum.

Son zamanlarda Meta (Facebook çalışanları) tarafından yayınlanan bir LLM olan Llama 2'yi de deneme şansım oldu. Bu model GPT'den bağımsız olarak geliştirilmiş olsa da, kural koymak ve sonra onları görmezden gelmek gibi aynı psikolojik tuhaflıklardan bazılarına sahip gibi görünüyor. REACH ve GRASP'ı birbirine bağlayan bir merdiven istediğimde, Llama 2 şunu önerdi:

UZANMAK -> ÖĞRETMEK -> SÜZMEK -> LIÇ -> KONUŞMA -> KOLTUK -> AYAK -> KAVRAMA

Kehanet ve Kod Maymunu

Matt Welsh, büyük dil modelleri üzerine kurulu bilgi işlem sistemleri için iki çalışma modundan bahseder. Şimdiye kadar, kehanet modu dediğim, bir soru sorduğunuz ve bilgisayarın bir cevap verdiği bir modda çalıştık. Bir çift kelime sağlarsınız ve sistem bunları birbirine bağlayan bir merdiven bulur ve oraya ulaşmak için gereken hesaplamaları yapar. Mali kayıtlarla dolu bir ayakkabı kutusu teslim edersiniz ve bilgisayar 1040 formunuzu doldurur. Geçmiş iklim verilerini derlersiniz ve bilgisayar 2050'deki ortalama küresel sıcaklığı tahmin eder.

AI oracle'larına alternatif, AI Code Monkey'dir. İkinci modda, makine sorularınıza doğrudan cevap vermez veya hesaplamalarınızı yapmaz; Bunun yerine, geleneksel bir bilgisayarda çalışabilen bir program oluşturur. Botunuzdan bir sözcük merdiveni yerine, seçtiğiniz programlama dilinde yazılmış bir sözcük merdiveni oluşturan bir program döndürürsünüz. Eksiksiz bir vergi beyannamesi doldurmak yerine, vergi hazırlama yazılımı alırsınız; İklim modelleri, sıcaklık tahminlerinin yerini alır.

ChatGPT 3.5 ile deneyelim:

Merdiven bulmacalarını çözmek için wordLadder özelliğini kullanabilirsiniz. İşte bir kullanım örneği:

Çıktısı:

Bunun temel bir tanıtım olduğunu ve daha büyük merdivenler veya daha karmaşık senaryolar için genişlik öncelikli arama gibi ek iyileştirmeler veya algoritmalar gerekebileceğini unutmayın.

Yine, çıktıya üstünkörü bir bakış, performansın başarılı olduğunu gösterir. ChatGPT, Java'da İngilizce kadar akıcı görünüyor. if, while ve for ifadelerinin sözdizimini ve tüm telaşlı noktalama işaretlerini ve parantez kurallarını bilir. Makine tarafından oluşturulan programlar, belirli bir görevi yerine getirmek için tüm bu bileşenleri birleştiriyor gibi görünüyor. Ayrıca, kesinlikle bizim yararımıza olan çok sayıda açıklayıcı yoruma da dikkat edin, bunun için değil. Benzer şekilde, tanımlayıcı değişken adları (currentWord, newWord, ladder).

ChatGPT ayrıca proaktif olarak programı belirli bir örnek üzerinde (MART'tan NİSAN'a) çalıştırmaya yönelik talimatları içerir ve önceki alışverişimizde verilen yanıtla eşleşen sonucu yazdırır. Bu çıktı, programı gerçekten çalıştırarak mı üretiliyor? ChatGPT bunu açıkça söylemiyor, ancak programı talimatlara göre çalıştırırsanız, görüntülenen sonuçları alacağınızı iddia ediyor (tüm gülünç ihtişamla).

Programı bir web tarayıcısına veya başka bir Java yürütme ortamına yükleyerek bu ifadeyi test edebiliriz. Sonuç: yakalandı! Program çalıştı, ancak belirtilen sonucu üretmedi. PROGRAMIN GERÇEK ÇIKTISI: MART -> MART -> NISAN -> NISAN -> NISAN. Bu dizi o kadar garip değil çünkü bir seferde yalnızca bir harf değiştirme kuralına uyuyor ve tüm "kelimeler" tam olarak beş harfe sahip. Öte yandan, İngilizce sözlüklerde ara "kelime" bulunamaz.

MART -> MART -> NISAN > NISAN > NISAN DIZILERI OLUŞTURAN BASIT BIR ALGORITMA VARDIR. Başlangıç kelimesini soldan sağa doğru adım adım ilerletin, her konumdaki harfi hedef kelimedeki karşılık gelen harfle eşleşecek şekilde değiştirin. Bu kuralı takiben, beş harfli herhangi bir kelime çifti, en fazla beş adımda adımlar halinde düzenlenebilir. MART -> NİSAN sadece dört adım atıyor çünkü ortadaki R'nin değiştirilmesi gerekmiyor. Bir kelime merdiveni yapmanın daha kolay bir yolunu hayal edemiyorum - elbette, herhangi bir harf karışımını tek bir kelime olarak saymaya istekli olduğunuzu varsayarsak.

ChatGPT tarafından oluşturulan program bu hızlı ve kirli rutini kullanabilir, ancak çok daha sıkıcı bir şey yapar: ilki başlangıç kelimesi olan tüm olası merdivenleri inşa eder ve hedef kelimeyi içeren bir merdivene rastlayana kadar bu merdivenleri genişletmeye devam eder. Bu savurgan bir kaba kuvvet algoritmasıdır. Başlangıç kelimesinin her harfi 25 şekilde değiştirilebilir. Böylece, 5 harfli bir kelimenin 125 olası halefi vardır. Beş basamaklı merdivene ulaştığınızda 190 milyon olasılık var. (BURADA VERDIĞIM MART -> NISAN VE REACH-> GRAMP GIBI ÖRNEKLERIN DEĞIŞMEZ BIR HARFI VARDIR, BU NEDENLE ÇÖZÜM YALNIZCA DÖRT ADIM SÜRER.) Beş adımlı çözümün tamamını hesaplamaya çalışmak sabrımı tüketti. )

4. Nesil Kod Maymunu

Aynı kodlama egzersizini ChatGPT 4 ile deneyelim. Aynı ipucu verildiğinde, yeni bot şu şekilde yanıt verir:

Program aynı genel yapıya sahiptir (içinde iç içe geçmiş iki for döngüsü bulunan bir while döngüsü) ve aynı algoritmik stratejiyi kullanır (belirli bir kelimeden farklı olan tüm dizeleri tek bir yerde üretir). Ancak GPT-4 sürümünün büyük bir yeniliği var: bir kelime listesinin tanınması çok önemli. Bu değişiklikle, nihayet gerçek kelimelerden oluşan bir merdiven oluşturma umudumuz var.

GPT-4 bir listeye olan ihtiyacı kabul etse de, yalnızca yukarıda verilen REACH-> GRASP örneği için yapılandırdığı 10 kelimelik bir dizi olan bir yer tutucu sağlar. Bu kelime listesinin taslakları, sahte "REACH-to-GRASP" merdivenini yeniden oluşturmak için bile çok az işe yarar. Bunu yapmaya çalışırsanız, program merdiven olmadığını bildirecektir. Bu sonuçta yanlış bir şey yok, çünkü belirli bir 10 kelime, adım başına yalnızca bir harfi değiştirmek için etkili bir yol oluşturmaz.

Listedeki kelimeler özenle seçilse bile, 10'un kelime dağarcığı çok önemsizdir. Daha büyük sözcük listeleri oluşturmak, dil modelleri için kolay bir iş gibi görünüyor. Ne de olsa, LLM, neredeyse tüm İngilizce kelimelerin en az bir kez göründüğü, ortak kelimelerin milyonlarca kez göründüğü büyük bir metin külliyatı üzerinde eğitilmiştir. Robot bu kelimelerin temsili bir örneğini alamaz mı? Cevap açıkça hayır. GPT'nin tüm bu metni "okuduğu" söylenebilse de, bu kelimeleri kolay erişilebilir herhangi bir biçimde saklamaz. (Aynı şey insan okuyucular için de geçerli.) Kelime dağarcığınızdaki en yaygın 10 beş harfli kelimenin bir listesini bir ömür boyu okuma deneyimlerine bakarak yapabilir misiniz?

ChatGPT 4'ten bir kelime listesi oluşturmasını istediğimde özür dileyerek itiraz etti: "Karışıklık için özür dilerim, ancak OpenAI tarafından geliştirilen bir yapay zeka olarak kelime veritabanına doğrudan erişemiyorum veya harici kaynaklardan veri alma yeteneği elde edemiyorum..." Bu yüzden bazı numaralar denedim ve robottan 1000 kelimelik bir hikaye yazmasını ve ardından hikayenin kelimelerini sıklığa göre sıralamasını istedim. Hile işe yaradı, ancak örnek çok fazla kullanılamayacak kadar küçüktü. Buna bağlı kaldığım sürece, GPT'den kabul edilebilir bir liste elde edebilirim, ancak kestirme bir yol izliyorum. Ne de olsa OpenAI tarafından geliştirilen bir yapay zeka değilim ve harici kaynaklara erişimim var. Knuth'un kelime merdiveni deneyi için derlediği 5.757 beş harfli İngilizce kelimeden oluşan bir liste hazırladım. Bu listeyle, GPT-4'te yazılan programlar aşağıdaki dokuz adımlı merdiven diyagramını bulacaktır:

ULAŞMAK -> ŞEFTALI -> BARIŞI -> YER -> UÇAK -> PLANLARI -> GLANS -> CAM -> ÇIMEN -> ÜZÜM

Bu sonuç, Knuth'un 30 yıl önce Stanford Graphbase'de yayınladığı kendi merdiven programının çıktısıyla tam olarak eşleşiyor.

Bu noktada, biraz dışarıdan yardımla ChatGPT'nin nihayet isteğimi yerine getirdiğini itiraf etmeliyim. Geçerli bir kelime merdiveni oluşturabilen bir program yazar. Ama yine de çekincelerim var. GPT-4 ve Knuth aynı çıktıyı üreten programlar yazsa da, programların kendileri eşdeğer, hatta benzer değildir.

Knuth bu soruna ters yönde yaklaştı, tüm olası beş harfli dizelerin (sayısı 12 milyondan az) bir koleksiyonuyla değil, 5.757 yaygın İngilizce kelimeden oluşan çok daha küçük bir listesiyle başladı. Daha sonra, her kelimenin bir düğüm olduğu ve iki düğümün, ancak karşılık gelen kelimeler bir harfle farklıysa kenarlarla bağlandığı bir grafik (veya ağ) oluşturur. Aşağıdaki çizimde böyle bir diyagramın bir parçası gösterilmektedir.

Diyagramda, bir kelime merdiveni, başlangıç düğümünden hedef düğüme kadar bir dizi kenardır. En iyi merdiven, en az sayıda kenardan geçen en kısa yoldur. Örneğin, tasmadan öğürmeye giden en iyi yol tasma -> liç -> ulaşmak -> retch'tir, ancak tasma -> liç -> plaj -> şeftali -> ulaşmak -> retch gibi daha uzun yollar da vardır. En kısa yolu bulmak için Knuth, 20. yüzyılın 50'li yıllarında Edsger W. Dijkstra tarafından tasarlanan bir algoritma kullandı.

Knuth'un kelime merdiveni programı, basit bir kelime listesini bir grafiğe dönüştürmek için önceden yatırım gerektirir. Öte yandan, ikincisinin unsurları olamayacak binlerce veya milyonlarca beş harfli dizeyi boşa harcamaktan kaçınır. REACH-> GRASP problemini çözerken, GPT-4 programı bu tür 219.180 dize üretti; Bunlardan sadece 2.792'si (%1'in biraz üzerinde) gerçek kelimelerdir.

Anlattığım çeşitli kelime merdiveni prosedürleri öğrenciler tarafından gönderilirse, kelime listesi olmayan versiyona başarısız bir not vereceğim. Listedeki GPT-4 programı geçecek, ancak verimlilik ve zarafet uğruna Knuth programına yalnızca en yüksek notları vereceğim.

Sohbet robotları neden düşük algoritmaları tercih ediyor? İpuçları almak için Google'da "kelime merdiveni programı" yazabilirsiniz. En üst sıralarda yer alan sonuçların neredeyse tamamı Leetcode, GeeksForGeeks ve RosettaCode gibi sitelerden geldi. Bu siteler, tıpkı GPT programları gibi, her kelimenin 125 tek harfli varyantının tümünü oluşturmayı gerektiren çözümlerle, programlama yarışmalarında iş arayanlara ve rakiplere hitap etmeyi amaçlamaktadır. Bu tür çok fazla site olduğu için - yüzlerce var gibi görünüyor - Knuth'un kitabı gibi diğer kaynaklardan daha önemlidir (eğer metin eğitim setinde görünüyorsa). Bu, yanlış algoritma seçimi için GPT'yi değil Leetcode'u suçlamamız gerektiği anlamına mı geliyor? Bunun yerine, protokolün kaçınılmaz zayıflıklarına dikkat çekmek istiyorum, bunlardan en yaygın olanı varsayılan olarak doğru cevaptır.

Tüm yazılımlarımız için büyük dil modellerinin yazıldığını düşündüğümde, ilgili başka bir endişe beni rahatsız ediyor. Yeni algoritmalar nereden geliyor? Üniversite dil modeli, mevcut projelerin unsurlarını yeniden karıştırmada yaratıcı olabilir, ancak tamamen yeni ve daha iyi bir şey icat etmesinin hiçbir yolunu göremiyorum.

** Merdiven kelimesi yeter! **

ChatGPT'ye belirli (ve alakasız) bir sorunun çok fazla çeşidiyle işkence ederek çok ileri gittiğimi itiraf edeceğim. Belki de üniversite dil modelleri diğer hesaplama görevlerinde daha iyi performans gösterir. Karışık sonuçlarla birkaç tane denedim. Sadece bunlardan birini tartışmak istiyorum ve ChatGPT'nin çabalarını oldukça dokunaklı buluyorum.

ChatGPT 3.5 ile 100. Fibonacci sayısının değerini soruyorum. Sorumun Oracle modunda sorulduğuna dikkat edin; Bu numarayı soruyorum, hesaplayan bir program değil. Yine de ChatGPT gönüllü olarak bir Fibonacci programı yazar ve ardından bu programın çıktısını oluşturur.

Bu program tarafından uygulanan algoritma matematiksel olarak doğrudur; Doğrudan, {0, 1}'den başlayan bir dizinin üyesi olan ve sonraki her elemanın ilk iki öğenin toplamına eşit olduğu Fibonacci dizisinin tanımından gelir. Verilen cevap da doğrudur: 354224848179261915075 gerçekten de 100. Fibonacci sayısıdır. Peki sorun ne? Ortadaki cümle: "Bu kodu çalıştırdığınızda, 100. Fibonacci sayısını verecektir." Bu doğru değil. Kodu çalıştırırsanız, 354224848179262000000 yanlış değeri alırsınız. Java'nın son sürümleri, bu sorunu çözmek için BigInt veri türünü sağlar, ancak ChatGPT programlarının yapmadığı BigInt'in açıkça belirtilmesi gerekir. Bu anomalinin nedeni, Java'nın tamsayı değerleri için bile kayan nokta aritmetiği kullanmasıdır. IEEE kayan nokta standardına göre, kesinlik kaybı olmadan temsil edilebilecek maksimum tamsayı 253−1'dir; 100. Fibonacci sayısı yaklaşık 268'dir. Ben buna dokunaklı düşünme diyorum: ChatGPT doğru cevabı veriyor, ancak bu cevabı hesaplamak için kullandığını iddia ettiği yöntem bunu sağlamıyor. Bot, doğru değeri başka yollarla bulmuş olmalı, ancak kesin yol açıklanmadı.

Aynı görevi ChatGPT 4.0'a vermek bizi daha da garip bir yolculuğa çıkaracaktır. Bir sonraki etkileşimde, sistemin yazdığı kodun bir kısmını test etmesine ve çalıştırmasına olanak tanıyan bir ChatGPT eklentisi olan Code Interpreter'ı etkinleştirdim. Görünüşe göre, robot bu özellikten yararlandı ve ilk önce bilinmeyen nedenlerle başarısız olan bir program buldu:

Burada ChatGPT, Code Interpreter tarafından desteklenen ana programlama dili olan Python ile yazılmıştır. Bir program yazmaya yönelik ilk girişim, Fibonacci matrislerinin üslenmesine dayanıyordu:

Bu iyi bilinen ve etkili bir yöntemdir ve program bunu doğru bir şekilde uygular. Ancak, gizemli nedenlerden dolayı, kod yorumlayıcısı programı çalıştıramaz. (Kod, standart bir Python ortamında iyi çalışır ve doğru yanıtı döndürür.) )

Bu noktada, robot tamamen yeni bir yöne dönecek ve havalanacak, bu da gerekli Fibonacci değerinin Binet formülü adı verilen matematiksel bir kimlikle hesaplanmasını önerecektir. Matematiksel ifadeler yazmıştı ama sonra fikrini değiştirdi. Sayısal kesinlik problemini doğru bir şekilde öngörür: 5'in karekökünün kesin bir değeri verildiğinde, formül kesin bir sonuç verecektir, ancak bu mümkün değildir.

Şimdi ChatGPT, sürüm 3.5 ile aynı yinelemeli algoritmayı kullanarak farklı bir strateji benimsedi. Bu sefer doğru cevabı aldık çünkü Python (Java'nın aksine) büyük tamsayılarla uğraşırken herhangi bir sorun yaşamıyor.

Bu performanstan sadece doğru cevapla değil, aynı zamanda sistemin cesur ısrarıyla da etkilendim. ChatGPT'nin sorunlarına rağmen, sebat etti, beklenmedik zorluklar karşısında şaşkına döndü ama pes etmeyi reddetti. "Eh, bu matris yöntemi işe yaramalı. Ama neyse, Binet formülünü deneyelim... Oh bekle, unuttum... Her neyse, bu konuda bu kadar süslü olmaya gerek yok. Bunu açık, yavaş bir şekilde yapalım. Problem çözme konusunda çok insani bir yaklaşım olduğunu hissediyorum. Bu davranışı makinelerde görmek garip.

Başarı ve başarısızlık puanlarını kaydedin

Küçük deneyim, yapay zeka kahinlerinin ve yapay zeka kod maymunlarının insan programcıları dışlamak üzere olduğu iddiasından şüphe duymama neden oldu. Bazı başarılar gördüm, ama daha çok bir başarısızlık. Bu kasvetli kayıt, çözümleri iyi bilinen ve yaygın olarak yayınlanan nispeten basit hesaplama görevlerinde derlenmiştir.

Diğerleri, LLM kod üretiminin daha geniş ve daha derin bir değerlendirmesini yaptı. Bu makalenin sonundaki kaynakçada, bu tür beş çalışmayı listeliyorum. Bildirdikleri bazı sonuçları kısaca özetlemek istiyorum.

İki yıl önce, Mark Chen ve OpenAI'deki 50'den fazla meslektaşı, ChatGPT 3'ün kod yazmaya adanmış bir çatalı olan Codex'in doğruluğunu ölçmek için çok çaba sarf etti. (Codex o zamandan beri "programcının asistanı" olan GitHub Copilot'a güç veren motor haline geldi.) ) Python programları yazarak yapılabilecek 164 görevden oluşan bir dizi oluşturdu. Bu görevler çoğunlukla ders kitabı alıştırmaları, programlama yarışmaları ve kodlama iş görüşmelerinde nasıl başarılı olunacağına dair (şaşırtıcı) literatürdeki türlerdir. Çoğu görev yalnızca birkaç satır kodla tamamlanabilir. Örnek: Belirli bir kelimedeki sesli harf sayısını hesaplayın, bir tamsayının asal mı yoksa bileşik mi olduğunu belirleyin.

Profesör Chen'in ekibi ayrıca başarı ve başarısızlığı tanımlama kriterleri hakkında da biraz düşündü. LLM süreci deterministik olmadığı için (kelime seçimi olasılığa dayalıdır), model ilk denemede kusurlu bir program oluşturabilir, ancak girişimin devam etmesine izin verilirse sonunda doğru yanıtı üretecektir. Sıcaklık adı verilen bir parametre belirsizlik derecesini kontrol eder. Sıfır sıcaklıkta, model her adımda her zaman en olası kelimeyi seçer; Sıcaklık yükseldikçe, rastgelelik ortaya çıkar ve olası olmayan kelimelerin seçilmesine izin verir. Chen ve ark. Üç başarı ölçütü benimseyerek bu değişikliğin olasılığını göz önünde bulundurun:

pass@1: LLM ilk denemede doğru programı oluşturur

pass@10: Oluşturulan 10 programdan en az biri doğru

pass@100: Oluşturulan 100 programdan en az biri doğru

Pass@1 testler sıfır sıcaklıkta gerçekleştirilir, bu nedenle model her zaman en iyi tahmini verir. pass@10 ve pass@100 denemeleri daha yüksek sıcaklıklarda gerçekleştirilir ve bu da sistemin daha geniş bir potansiyel çözüm yelpazesini keşfetmesine olanak tanır.

Yazarlar, 164 görevin tamamında Codex'in birden fazla versiyonunu değerlendirdi. Codex'in en büyük ve en güçlü versiyonu için pass@1 oranı yaklaşık% 29, pass@10 oranı% 47 ve pass@100% 72'ye ulaşıyor. Bu rakamları gördüğümüzde etkilenmeli miyiz yoksa şok mu olmalıyız? Codex'in ilk denemede neredeyse üçte birinde (sıcaklık sıfıra ayarlandığında) haklı olduğunu kutlamaya değer mi? Ya da doğru olanı bulmak için önerilen 100 planı gözden geçirmeye istekli olsaydınız, başarı oranı neredeyse dörtte üçe mi çıktı? Benim kişisel görüşüm şudur: LLM'nin şu anki nesline uzun vadeli bir araştırma programında öncü bir çaba olarak bakarsanız, sonuçlar cesaret vericidir. Ancak teknolojinin elle kodlanmış yazılımın yerini hemen alabileceğini düşünüyorsanız, çok az umut var. Hala gerekli güvenilirlik seviyesinden çok uzağız.

Diğer çalışmalar da genel olarak benzer sonuçlar vermiştir. Fredrico Cassano ve ark. Çeşitli programlama dillerinde kod üreten birden çok LLM'nin performansını değerlendirin; Çok çeşitli pass@1 oranları bildiriyorlar, ancak yalnızca ikisi %50'yi aşıyor. Alessio Buscemi, ChatGPT 3.5'i 40 dilde yazılmış programlar gerektiren ve her sorguyu 10 kez tekrarlayan 10 kodlama görevinde test etti. 4.000 denemeden 1.833'ü derlenebilecek ve yürütülebilecek kod üretti. Liu Zhijie ve ark. ChatGPT hakkındaki değerlendirmeleri, Leetcode web sitesinde yayınlanan sorulara dayanmaktadır. Oluşturulan kodu otomatik bir Leetcode puanlama sürecine göndererek sonuçları değerlendirin. Tüm sorular için ortalama kabul oranı, C ile yazılmış programlar için %31 ile Python programları için %50 arasında değişiyordu. Liu ve ark. Bir başka ilginç gözlem: ChatGPT, Eylül 2021'den (GPT'nin eğitim seti için son tarih) sonra yayınlanan sorularda çok daha kötü puan aldı. Robotun daha önceki sorunları daha iyi çözebileceğini düşünüyorlar çünkü eğitim sırasında zaten bir çözüm gördü.

Li Zhong ve Zilong Wang tarafından yayınlanan yeni bir makale, temel program doğruluğu sorununun ötesine geçiyor ve sağlamlık ve güvenilirliği göz önünde bulunduruyor. Oluşturulan program, var olmayan bir dosyayı açmaya çalışırken olduğu gibi hatalı biçimlendirilmiş girdilere veya harici hatalara doğru yanıt veriyor mu? LLM'nin istemi, bu tür sorunların nasıl düzgün bir şekilde ele alınacağını gösteren bir örnek içermesine rağmen, Zhong ve Wang, oluşturulan kodun zamanın yüzde 30 ila 50'sinde başarısız olduğunu buldu.

Bu sinir bozucu sonuçlara ek olarak, kendimden daha fazla şüphem var. Hemen hemen tüm testler kısa kod parçacıkları aracılığıyla gerçekleştirilir. 10 satırlık bir program yazmakta zorluk çeken bir LLM, 100 satırlık veya 1.000 satırlık bir program yazmakta daha fazla zorluk çekebilir. Ayrıca, basit bir başarılı/başarısız derecelendirmesi, kod kalitesinin çok kaba bir ölçüsüdür. Chen'in grup kıyaslama paketindeki asallık testini düşünün. Bu, Codex'te yazılmış programlardan biridir:

Bu kod doğru olarak derecelendirilmiştir - doğru olmalıdır çünkü asal sayıları asla bileşik sayılar olarak yanlış sınıflandırmaz ve bunun tersi de geçerlidir. Ancak, n büyük olduğunda, bir kararı bekleyecek sabrınız veya ömrünüz olmayabilir. Algoritma, n'yi 2 ile n−1 arasındaki her tamsayıya bölmeye çalışır.

** LLM alışılmadık pratiklik **

Büyük dil modelleri için henüz erken günler. ChatGPT bir yıldan kısa bir süre önce piyasaya sürüldü; Altta yatan teknoloji sadece yaklaşık altı yaşında. LLM'nin kodlama dünyasını fethetmeye hazır olmadığını iddia ettiğimden oldukça emin olsam da, asla yapmayacaklarını bu kadar güvenle tahmin edemiyorum. Bu modeller kesinlikle gelişecek ve onları daha iyi kullanacağız. Her sorgudan en iyi şekilde yararlanmanın bir yolu olarak "tam zamanında mühendislik" rehberliği sunan gelişmekte olan bir sektör zaten var.

LLM performansını artırmanın bir başka yolu, saf dil analiz araçlarından ziyade mantık ve akıl yürütme araçlarıyla donatılmış başka bir bilgi işlem sistemi ile bir melez oluşturmak olabilir. Son ölümünün arifesinde, Doug Lenat, LLM'yi kırk yıl boyunca inşa etmek için harcadığı büyük bir sağduyu veritabanı olan Cyc ile birleştirmeyi önerdi. Stephen Wolfram, ChatGPT'yi Wolfram'a entegre etmek için çalışıyor|Alfa'da, Wolfram|Alpha, seçilmiş veri ve algoritmaların çevrimiçi bir koleksiyonudur.

Yine de, LLM kursu oluşturmayı engelleyen bazı engellerin üstesinden gelmek zor görünüyor.

Dil modelleri sihirlerini basit bir şekilde çalışır: bir cümle veya paragraf yazma sürecinde, LLM bir sonraki kelimeyi önceki kelimeye göre seçer. Bu, telefonunuza bir metin mesajı yazmak gibidir: "Görüşürüz..." yazarsınız ve yazılım alternatif devamlar önerir: "yarın", "yakında", "daha sonra". LLM'de her adaya, model eğitim kümesindeki tüm metnin analizine dayalı olarak hesaplanan bir olasılık atanır.

Bir asırdan daha uzun bir süre önce, Rus matematikçi A. A. Markov ilk olarak bu istatistiksel analizden metin üretme fikrini araştırdı. Onun süreci artık n-gram modeli olarak biliniyor, burada n, dizinin bir sonraki öğesini seçerken göz önünde bulundurulması gereken kelime (veya karakter veya diğer semboller) sayısıdır. Uzun zamandır n-gram sürecinden etkilendim, ancak çoğunlukla komedi olasılıkları nedeniyle. (40 yıl önce yayınlanan bir yazıda "edebiyatı anlamsız hale getirme sanatı" demiştim.) ")

Tabii ki, ChatGPT ve diğer yeni LLM'ler n-meta modellerden daha fazlasıdır. Sinir ağları, ardışık n sembol dizisinin çok ötesinde dilsel istatistiksel özellikleri yakalar. Özellikle önemli olan, seçilen semboller arasındaki bağımlılıkları keyfi mesafelerde izleyen dikkat mekanizmasıdır. Doğal dillerde bu araç, özne ve fiil tutarlılığını korumak veya zamirleri atıfta bulundukları nesneyle ilişkilendirmek için kullanışlıdır. Programlama dillerinde dikkat mekanizması, çok parçalı sözdizimi yapılarının bütünlüğünü sağlar, örneğin... sonra... else ve parantezleri düzgün bir şekilde eşleştirilmiş ve iç içe geçmiş halde tutar.

Bununla birlikte, bu iyileştirmelerle bile, LLM esasen mevcut metinde görünen kelimelerin olasılığına dayalı olarak yeni metin oluşturmak için bir araçtır. Benim düşünce tarzıma göre, bu düşünme değil. Bu daha yüzeysel bir şey, fikirlerden ziyade kelimelere odaklanıyor. Bu kaba mekanizma göz önüne alındığında, LLM'nin ne kadar başarabildiğine hem şaşırdım hem de şaşırdım.

Onlarca yıldır, yapay zekanın mimarları, ister doğal ister yapay olsun, gerçek zekanın dünyanın zihinsel bir modelini gerektirdiğine inanıyordu. Etrafınızda (ve içinizde) neler olup bittiğini anlamak için, işlerin nasıl yürüdüğü, nasıl bir araya geldikleri, daha sonra ne olacağı, neden ve sonuç hakkında bir sezgiye sahip olmanız gerekir. Lynant, en önemli bilginin, okumaya başlamadan çok önce edindiğiniz bilgi olduğu konusunda ısrar ediyor. Yerçekimini düşerek öğrenirsiniz. Bir yapı taşı kulesini yıkmanın kolay ama yeniden inşa etmenin zor olduğunu gördüğünüzde, entropiyi anlarsınız. Dil kök salmaya başlamadan önce, bebeklik döneminde acı, korku, açlık ve sevgi hakkında bilgi edineceksiniz. Kutudaki beyin bu deneyime erişemez çünkü fiziksel veya sosyal evrene doğrudan erişemez.

İki yüz elli yıl önce, İsviçreli saat ustası Pierre Jacquet-Droz, tüy kalemle yazabilen mekanik bir otomat yaptı. Bu saat gibi çalışan cihazın yüzlerce kamı ve dişlisi var ve bir taburede oturan küçük bir çocuk gibi giyinmiş. Aktivasyondan sonra, çocuk kalemi mürekkebe batırdı ve kısa bir mesaj yazdı - en önemlisi Kartezyen aforizma "Düşünüyorum, öyleyse varım". Ne kadar komik! Ancak 18. yüzyılda bile kimse grafiti bebeklerinin gerçekten düşündüğüne inanmıyordu. LLM şüphecileri ChatGPT'yi aynı kategoriye koydu.

Size bu zıt LLM zihniyet teorilerinden hangisinin doğru olduğunu söyleyeceğim? Ben değilim. Her iki seçenek de bana çekici gelmedi. Eğer Bender ve diğerleri haklıysa, o zaman akıl yürütme veya hissetme yeteneği olmayan, fiziksel evren veya sosyal etkileşim deneyimi olmayan, öz farkındalığı olmayan, üniversite ödevleri yazan, rap şarkıları yazan, sevenlere tavsiyeler veren bir gadget gerçeğiyle yüzleşmeliyiz. Bilgi, mantık, duygular değersizdir; Kaygan dil hepsi bu. Bu yıkıcı bir önermedir. ChatGPT bu bilinçsiz şovla bizi kandırabiliyorsa, belki biz de yalancıyız ve onların sesleri ve öfkeleri anlamsızdır.

Öte yandan, eğer Sutskever haklıysa, o zaman değer verdiğimiz insan deneyiminin çoğu - büyüdükçe ve yaşadıkça yavaş yavaş gelişen kişilik duygusu - bu kelimeleri internette okuyarak öğrenilebilir. Eğer durum buysa, o zaman aslında ortaokulun tarif edilemez acısına katlanmak zorunda değilim, bu kadar kalp ağrısına ve zorluğa neden olan tüm aptalca hataları yapmak zorunda değilim; Dünyayla çarpışarak özgüvenimi incitmeye gerek yok. Bütün bunları koltuğumun rahatlığında okuyabilirdim; Sadece kelimeler, ruhumu şekillendiren vadideki tüm engelleri ve acıları yaşamadan beni berrak bir zihinle olgunluk durumuna getirebilir.

Büyük dil modellerinin bilgisayar bilimi üzerindeki durumu ve etkisi hakkında hala iki (veya belki ikiden fazla!) fikrim var. )。 Yapay zeka meraklıları haklı olabilir. Bu modeller, programlamanın yanı sıra diğer birçok çalışma ve öğrenme türünü de devralabilir. Ya da diğer umut verici AI yeniliklerinde olduğu gibi başarısız olabilirler. Bir cevap almak için çok uzun süre beklememiz gerektiğini sanmıyorum.

View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • Comment
  • Share
Comment
0/400
No comments
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)