Актуальные темы
#
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
Здание @EurekaLabsAI. Ранее директор по искусственному интеллекту @ Tesla, команда основателей @ OpenAI, CS231n/PhD @ Stanford. Мне нравится обучать большие глубокие нейронные сети.
Мне нравится выражение "пища для размышлений" как конкретная, загадочная когнитивная способность, которую испытывают люди, но у LLM нет эквивалента.
Определение: "что-то, о чем стоит подумать или что следует рассмотреть, как умственная пища, которая питает ваш разум идеями, инсайтами или вопросами, требующими более глубокого размышления. Это используется для тем, которые бросают вызов вашей точке зрения, предлагают новое понимание или заставляют вас задуматься над важными вопросами, действуя как интеллектуальная стимуляция."
Таким образом, в языке LLM это последовательность токенов, которая, когда используется в качестве подсказки для цепочки размышлений, дает образцы, которые стоит рассмотреть, через какую-то еще не открытую внутреннюю функцию вознаграждения. Я одержим тем, в какой форме это проявляется. Пища для размышлений.
142
Быстрый новый пост: Автоматическая оценка обсуждений Hacker News десятилетней давности с учетом ретроспективы
Я взял все 930 статей и обсуждений на главной странице Hacker News за декабрь 2015 года и попросил API Thinking GPT 5.1 провести ретроспективный анализ, чтобы выявить самые/наименее проницательные комментарии. Это заняло около 3 часов на написание кода и около 1 часа и 60 долларов на выполнение. Идея возникла после статьи HN вчера, где Gemini 3 попросили представить главную страницу HN через десять лет.
В более общем плане:
1. Ретроспективный анализ всегда меня fascinировал как способ тренировки вашей модели предсказания, поэтому чтение результатов действительно интересно, и
2. стоит задуматься о том, как это будет выглядеть, когда мегамозги LLM будущего смогут выполнять такую работу гораздо дешевле, быстрее и лучше. Каждая единица информации, которую вы вносите в интернет, может (и, вероятно, будет) подвергнута тщательному анализу, если она "бесплатная". Поэтому также мой предыдущий твит некоторое время назад - "будьте хорошими, будущие LLM вас наблюдают".
Поздравляю топ-10 аккаунтов pcwalton, tptacek, paulmd, cstross, greglindahl, moxie, hannob, 0xcde4c3db, Manishearth и johncolanduoni - GPT 5.1 Thinking нашел ваши комментарии самыми проницательными и проницательными из всех комментариев HN в декабре 2015 года.
Ссылки:
- Много подробностей в моем блоге
- Репозиторий GitHub проекта, если хотите поиграть
- Фактические страницы результатов для вашего удовольствия при чтении

647
В сегодняшнем эпизоде программного ужаса...
В документации Python по random.seed() мы читаем:
"Если a - это int, он используется напрямую." [1]
Но если вы используете 3 или -3 в качестве начального значения, вы на самом деле получаете один и тот же объект rng, производящий одинаковые потоки. (TIL). В nanochat я использовал знак как (как я думал) умный способ получить разные последовательности rng для разделения на обучающую/тестовую выборки. В результате возникла странная ошибка, потому что теперь train=test.
Я нашел код CPython, ответственный за это, в cpython/Modules/_randommodule.c [2], где в комментарии на строке 321 мы видим:
"Этот алгоритм зависит от того, что число является беззнаковым. Итак: если аргумент - это PyLong, используйте его абсолютное значение." за которым следует
n = PyNumber_Absolute(arg);
что явно вызывает abs() на вашем начальном значении, чтобы сделать его положительным, отбрасывая знак.
Но этот комментарий на самом деле тоже неверен/вводит в заблуждение. На самом деле, Python вызывает алгоритм Mersenne Twister MT19937, который в общем случае имеет 19937 (не нулевых) бит состояния. Python берет ваш int (или другие объекты) и "распределяет" эту информацию по этим битам. В принципе, бит знака мог бы быть использован для увеличения бит состояния. Ничто в алгоритме не "зависит от того, что число является беззнаковым". Было принято решение не включать бит знака (что, на мой взгляд, было ошибкой). Один тривиальный пример мог бы заключаться в том, чтобы сопоставить n -> 2*abs(n) + int(n < 0).
В конце концов, это приводит нас к контракту Python's random, который также не полностью изложен в документации. Упоминается контракт, который гласит:
одинаковое начальное значение => одинаковая последовательность.
Но нет гарантии, что разные начальные значения производят разные последовательности. Таким образом, в принципе, Python не дает никаких обещаний, что, например, seed(5) и seed(6) - это разные потоки rng. (Хотя это довольно часто подразумевается во многих приложениях.) Действительно, мы видим, что seed(5) и seed(-5) - это идентичные потоки. И вам, вероятно, не следует использовать их для разделения ваших обучающих/тестовых поведений в машинном обучении. Это один из более забавных программных ужасов, с которыми я столкнулся в последнее время. Увидимся в следующем эпизоде.
[1]
[2]

491
Топ
Рейтинг
Избранное
