Большие языковые модели и появление генераторов кода искусственного интеллекта
Мартин Хеллер
Ответственный редактор InfoWorld |
Когда я писал о GitHub Copilot в ноябре 2021 года, Copilot был одной из немногих доступных технологий генерации кода искусственного интеллекта. Я тестировал его как расширение кода Visual Studio. В то время Copilot не всегда генерировал хороший, правильный или даже работающий код, но все равно был в некоторой степени полезен. Большое обещание Copilot (и других генераторов кода, использующих машинное обучение) заключается в том, что он был разработан для улучшения с течением времени как за счет учета отзывов пользователей, так и за счет включения новых образцов кода в свой обучающий корпус.
По состоянию на май 2023 года только для кода Visual Studio доступны сотни расширений «ИИ» или «генерации кода». Некоторые из них могут сэкономить вам время при кодировании, но если вы верите их сгенерированному коду, не проверяя, не тестируя и не отлаживая его, у меня есть мост, который я могу вам продать.
Сотни расширений Visual Studio Code на рынке обещают «генерацию кода» или «ИИ», но лишь часть из них на самом деле генерирует код на основе машинного обучения.
Одним из многообещающих нововведений в этой области является то, что некоторые инструменты имеют автоматическое создание модульных тестов. Генерация модульных тестов — гораздо более разрешимая задача, чем генерация кода общего назначения — на самом деле это можно сделать с использованием простых шаблонов, — но вам все равно придется просматривать и запускать сгенерированные тесты, чтобы увидеть, имеют ли они смысл.
В заключение этой статьи я предложу краткую историю языковых моделей, прежде чем рассмотреть современные модели больших языков (LLM), такие как семейство GPT OpenAI и LaMDA и PaLM от Google, используемые для генерации текста. и генерация кода сегодня. Мы закончим кратким обзором 10 инструментов генерации кода, включая Amazon CodeWhisperer, Google Bard и GitHub Copilot X.
Языковые модели восходят к Андрею Маркову в 1913 году. Эта область исследования теперь называется цепями Маркова и представляет собой особый случай моделей Маркова. Марков показал, что в русском языке, в частности в пушкинском «Евгении Онегине», вероятность появления буквы зависит от предыдущей буквы и что вообще согласные и гласные имеют тенденцию чередоваться. С тех пор методы Маркова были распространены на слова, другие языки и другие языковые приложения.
Работа Маркова была расширена Клодом Шенноном в 1948 году на теорию коммуникаций, а затем снова Фредом Елинеком и Робертом Мерсером из IBM в 1985 году для создания языковой модели, основанной на перекрестной проверке (которую они назвали удаленными оценками) и примененной к реальному времени. Распознавание речи с большим словарным запасом. По сути, статистическая языковая модель присваивает вероятности последовательностям слов.
Чтобы быстро увидеть языковую модель в действии, введите несколько слов в поиск Google или приложение текстовых сообщений на своем смартфоне и разрешите ему предлагать варианты автозаполнения.
В 2000 году Йошуа Бенджио и др. опубликовал статью о нейровероятностной модели языка, в которой нейронные сети заменяют вероятности в статистической модели языка, обходя проклятие размерности и улучшая предсказания слов (на основе предыдущих слов) по сравнению со сглаженной триграммной моделью (тогда это был современный уровень техники). ) на 20–35%. Идея авторегрессионных нейросетевых моделей языка с прямой связью используется до сих пор, хотя теперь эти модели имеют миллиарды параметров и обучаются на обширных корпусах, отсюда и термин «большие языковые модели».
Как мы увидим, языковые модели со временем продолжали расширяться, чтобы повысить их производительность. Однако за это приходится платить. Статья 2021 года «Об опасностях стохастических попугаев: могут ли языковые модели быть слишком большими?» Эмили Бендер, Тимнит Гебру и др. задается вопросом, не заходим ли мы слишком далеко с этой тенденцией. Авторы, среди прочего, предлагают, чтобы мы сначала взвесили экологические и финансовые затраты и инвестировали ресурсы в курирование и тщательное документирование наборов данных, а не в поглощение всего в Интернете.