Popularne tematy
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.

Andrej Karpathy
Budynek @EurekaLabsAI. Wcześniej dyrektor AI @ Tesla, zespół założycielski @ OpenAI, CS231n/PhD @ Stanford. Lubię trenować duże, głębokie sieci neuronowe.
Uwielbiam wyrażenie „jedzenie dla myśli” jako konkretną, tajemniczą zdolność poznawczą, którą ludzie doświadczają, ale LLM nie mają jej odpowiednika.
Definicja: „coś, co warto przemyśleć lub rozważyć, jak mentalny posiłek, który odżywia twój umysł pomysłami, spostrzeżeniami lub kwestiami, które wymagają głębszej refleksji. Używa się go w odniesieniu do tematów, które kwestionują twoją perspektywę, oferują nowe zrozumienie lub skłaniają do rozważania ważnych pytań, działając jako stymulacja intelektualna.”
Więc w języku LLM to sekwencja tokenów, która, gdy jest używana jako podpowiedź do łańcucha myśli, sprawia, że próbki są nagradzające do rozważenia, poprzez jakąś jeszcze nieodkrytą wewnętrzną funkcję nagrody. Zafascynowany tym, w jakiej formie to występuje. Jedzenie dla myśli.
182
Szybki nowy post: Automatyczne ocenianie dyskusji na Hacker News sprzed dekady z perspektywy czasu
Wziąłem wszystkie 930 artykułów i dyskusji na stronie głównej Hacker News z grudnia 2015 roku i poprosiłem API GPT 5.1 Thinking o przeprowadzenie analizy z perspektywy czasu, aby zidentyfikować najbardziej/najmniej przenikliwe komentarze. Zajęło to około 3 godziny na kodowanie i około 1 godziny oraz 60 dolarów na uruchomienie. Pomysł zrodził się z artykułu HN z wczoraj, w którym poproszono Gemini 3 o wyobrażenie sobie strony głównej HN za dekadę.
Ogólnie rzecz biorąc:
1. analiza z perspektywy czasu zawsze mnie fascynowała jako sposób na trenowanie modelu prognozowania, więc czytanie wyników jest naprawdę interesujące i
2. warto zastanowić się, jak to będzie wyglądać, gdy megamózgi LLM przyszłości będą mogły wykonywać tego rodzaju prace znacznie taniej, szybciej i lepiej. Każda informacja, którą wnosisz do internetu, może (i prawdopodobnie będzie) dokładnie analizowana, jeśli jest "darmowa". Stąd także mój wcześniejszy tweet sprzed pewnego czasu - "bądź dobry, przyszłe LLM-y obserwują".
Gratulacje dla 10 najlepszych kont: pcwalton, tptacek, paulmd, cstross, greglindahl, moxie, hannob, 0xcde4c3db, Manishearth i johncolanduoni - GPT 5.1 Thinking uznało wasze komentarze za najbardziej wnikliwe i przenikliwe ze wszystkich komentarzy HN w grudniu 2015 roku.
Linki:
- Dużo więcej szczegółów w moim poście na blogu
- Repozytorium GitHub projektu, jeśli chcesz spróbować
- Rzeczywiste strony wyników dla twojej przyjemności czytania

723
W dzisiejszym odcinku programistycznego horroru...
W dokumentacji Pythona dotyczącej random.seed() mówimy:
"Jeśli a jest liczbą całkowitą, jest używane bezpośrednio." [1]
Ale jeśli użyjesz nasion 3 lub -3, otrzymasz dokładnie ten sam obiekt rng, produkujący te same strumienie. (TIL). W nanochat używałem znaku jako (jak myślałem) sprytnego sposobu na uzyskanie różnych sekwencji rng dla podziałów treningowych/testowych. Stąd paskudny błąd, ponieważ teraz train=test.
Znalazłem kod CPython odpowiedzialny za to w cpython/Modules/_randommodule.c [2], gdzie w linii 321 widzimy w komentarzu:
"Ten algorytm opiera się na tym, że liczba jest bez znaku. Więc: jeśli argument jest PyLong, użyj jego wartości bezwzględnej." a następnie
n = PyNumber_Absolute(arg);
co wyraźnie wywołuje abs() na twoim nasieniu, aby uczynić je dodatnim, odrzucając bit znaku.
Ale ten komentarz jest również błędny/mylny. Pod maską Python wywołuje algorytm Mersenne Twister MT19937, który w ogólnym przypadku ma 19937 (niezerowych) bitów stanu. Python bierze twoją liczbę całkowitą (lub inne obiekty) i "rozprzestrzenia" te informacje po tych bitach. Zasadniczo bit znaku mógł być użyty do zwiększenia bitów stanu. Nie ma nic w algorytmie, co "opiera się na tym, że liczba jest bez znaku". Podjęto decyzję, aby nie uwzględniać bitu znaku (co moim zdaniem było błędem). Jednym z trywialnych przykładów mogłoby być mapowanie n -> 2*abs(n) + int(n < 0).
Na koniec prowadzi nas to do kontraktu Pythona dotyczącego random, który również nie jest w pełni opisany w dokumentacji. Wspomniany kontrakt to:
to samo nasienie => ta sama sekwencja.
Ale nie ma gwarancji, że różne nasiona produkują różne sekwencje. Więc w zasadzie Python nie obiecuje, że np. seed(5) i seed(6) to różne strumienie rng. (Chociaż to dość powszechnie zakłada się w wielu aplikacjach.) Rzeczywiście, widzimy, że seed(5) i seed(-5) to identyczne strumienie. I prawdopodobnie nie powinieneś ich używać do oddzielania swoich zachowań treningowych/testowych w uczeniu maszynowym. Jeden z bardziej zabawnych programistycznych horrorów, które ostatnio napotkałem. Do zobaczenia w następnym odcinku.
[1]
[2]

512
Najlepsze
Ranking
Ulubione
