Самое лучшее в ИИ – это его способность…
(
…учиться (
…предсказывать (
…создавать (
…понимать (
…делать (
Примечательно, что, когда ChatGPT пытается написать эссе, по сути он просто снова и снова спрашивает: «Учитывая текст на данный момент, каким должно быть следующее слово?» – и каждый раз добавляет это новое слово. (Точнее, он добавляет так называемый токен, который может быть и частью слова; именно поэтому ChatGPT иногда может «составлять новые слова». Но об этом позже.)
Итак, на каждом этапе ChatGPT создает список слов с указанием вероятности их присутствия на данном месте. Но какое из них нужно выбрать, например, для эссе? Можно предположить, что это должно быть слово с самым высоким рейтингом (то есть то, для которого определена самая высокая вероятность). Однако именно здесь ChatGPT начинает проявлять свои вуду-способности. Потому что по какой-то причине (возможно, однажды мы ее даже узнаем), если всегда будем выбирать слово с самым высоким рейтингом, мы получим очень гладенькое эссе без малейшего признака креативности (и которое будет слово в слово повторять множество других текстов). Но если мы наугад выбираем слова с более низким рейтингом, то эссе получается «более интересное».
Здесь действует фактор случайности, а это значит, что, даже используя каждый раз один и тот же промпт[1], мы, скорее всего, получим разные эссе. И, как мы уже упоминали, у ChatGPT есть своя вуду-идея, то есть у него существует так называемый температурный параметр, который определяет, как будут использоваться слова с более низким рейтингом, и для создания эссе, оказывается, лучше всего подходит температура, равная 0,8. (Нужно подчеркнуть, что это никакая не теория – это просто вывод из того, что работает на практике. И например, понятие «температура» применяется потому, что здесь используются экспоненциальные распределения, знакомые нам из статистической физики, но нет никакой физической связи – по крайней мере насколько нам известно.)
Прежде чем мы продолжим, я должен объяснить, что ради простоты изложения не стану рассматривать всю систему, лежащую в основе ChatGPT. Вместо этого буду работать с более простой системой – GPT-2, которую можно запустить на обычном персональном компьютере. И поэтому практически для всего, что вам здесь покажу, я включу код на языке Wolfram, который вы сможете немедленно запустить на своем компьютере.
Например, вот как получить таблицу вероятностей, приведенную выше. Во-первых, мы должны иметь базовую нейронную сеть языковой модели:
In[]:= model = NetModel[{"GPT-2 Transformer Trained on WebText Data", "Task" -> "LanguageModeling"}]
Out[]= NetChain[
Позже мы заглянем внутрь этой нейронной сети и поговорим о том, как она работает. Но пока можем просто применить эту модель к нашему тексту в качестве черного ящика и запросить пять наиболее подходящих слов, которые, по мнению модели, должны следовать за указанным текстом:
In[]:= model["The best thing about AI is its ability to", {"TopProbabilities", 5}]
Out[]= {do -> 0,0288508, understand -> 0,0307805,
make -> 0,0319072, predict -> 0,0349748, learn -> 0,0445305}
Затем эти строки превращаются в отформатированный набор данных:
In[]:= Dataset[ReverseSort[Association[%]],
ItemDisplayFunction -> (PercentForm[#, 2] &)]
Вот что произойдет, если многократно «применять модель» – на каждом шаге добавлять слово, имеющее наибольшую вероятность (в коде это слово decision):