Рисование изображений, изучение правил в альтернативном мире, перевод программ, извлечение информации из обзоров, межъязыковая беседа и т. д.

Введение

С момента своего запуска 30 ноября ChatGPT покорил мир. Интернет был взорван сообщениями на многочисленных платформах социальных сетей, показывающими различные способы использования ChatGPT. В сегодняшней статье мы рассмотрим некоторые интересные варианты использования, для которых, по нашему мнению, можно использовать ChatGPT, а также некоторые другие забавные эксперименты для проверки его возможностей.

Поиск слова/тезаурус

Большинство из нас были в ситуации, когда мы искали правильное/идеальное слово. Слово, которое заключает в себе то, что мы пытаемся выразить в краткой, но точной форме. ChatGPT — это хорошая альтернатива использованию тезауруса или поисковой системы, которая может дать вам мгновенный ответ.

Благодаря своей способности переписывать или создавать контент в определенном стиле, ChatGPT может составить сильную конкуренцию подобным QuillBot, Grammarly и т. д.

Перевод кода

Программисты часто вынуждены повторно реализовывать одни и те же функции на разных языках. Это может быть по нескольким причинам, например, некоторые языки легче изучать, но они плохо масштабируются, и наоборот. Возьмем, к примеру, любые операции, основанные на машинном обучении. Несмотря на наличие высокоуровневых интерфейсов Python, под капотом операции выполняются на таком языке, как cython, rust и т. д.

Другой вариант использования может быть, когда человек знаком с некоторыми языками, но место, где он работает, может использовать другой язык для разработки приложений. В таком сценарии программисту может потребоваться потратить много времени на подготовку и изучение языка. Наличие инструмента для перевода кода между языками может оказаться неоценимым как для обучения программиста новому языку, так и для обеспечения его продуктивной работы и более быстрого внесения вклада в репозиторий.

На изображении выше ChatGPT может преобразовать функцию в scala в функцию в python. Самое интересное в этом примере заключается в том, что ChatGPT замечает, что мы пытаемся вычислить скалярное произведение для разреженных векторов по плотным векторам, и упоминает, как мы потеряли бы эффективность, если бы использовали доступную функцию dot в NumPy.

Очистка кода

Хорошие программисты гордятся тем, что могут писать чистый код. Хотя особенности чистого кода могут различаться, цель состоит в том, чтобы написать код, который легко понять читателю и чтобы будущие разработчики могли вносить в него изменения. Это часто принимает форму написания четкой документации, упоминания типов данных, создания детализированных функций, которые служат только одной цели, повторного использования кода везде, где это возможно, и т. д.

Однако рефакторинг кода обычно происходит после того, как программист создает рабочую версию кода, которая может быть не совсем чистой. Наличие единого инструмента, очищающего код, генерирующего комментарии и т. д., может сэкономить программистам много времени и заменить многочисленные линтеры и анализаторы кода, которые мы используем.

Мы отправляем в ChatGPT пару функций, использованных в некоторых наших статьях по обучению собственной модели ожидаемых целей. Обратите внимание, что мы явно не указываем цель этих функций для ChatGPT.

Примечание. Чтобы упростить чтение, мы извлекаем фрагменты кода и вставляем их сюда. Изображение приглашения и его вывода также показано позже.

def get_shot_angle(shot_x: float, shot_y: float):

    deg2 = (360 + degrees(atan2(GOAL_POSTS[0][0] - shot_x, GOAL_POSTS[0][1] - shot_y))) % 360
    deg1 = (360 + degrees(atan2(GOAL_POSTS[1][0] - shot_x, GOAL_POSTS[1][1] - shot_y))) % 360
    angle = deg2 - deg1 if deg1 <= deg2 else 360 - (deg1 - deg2)
    print(f"{angle}")
    return angle

def get_pass_shot_zones(x, y):
    pitch = Pitch(line_color='black', pitch_type='statsbomb')
    ret = pitch.bin_statistic(x, y, None, 'count', bins=[10, 8])
    zones = [(ret["binnumber"][0][i], ret["binnumber"][1][i]) for i in range(len(ret["binnumber"][0]))]
    return zones

Приведенный выше фрагмент кода был отправлен в ChatGPT. Его ответ ниже. Сразу же, некоторые впечатляющие вещи:

  • Он знает, какие библиотеки импортировать.
  • Несмотря на то, что некоторые комментарии банальны, они вполне точны. Мы были очень удивлены, увидев, как ChatGPT сделал вывод, что код связан с футболом. Особенно то, что удалось понять, что мы смогли рассчитать угол удара между двумя стойками ворот.
from math import atan2, degrees

# Define goal post coordinates
GOAL_POSTS = [(0, 0), (0, 0)]

def get_shot_angle(shot_x: float, shot_y: float):
    """
    Calculates the angle of a shot based on the coordinates of the shot and the location of the goal posts.
    """
    # Calculate the angle of the shot relative to each goal post
    deg1 = (360 + degrees(atan2(GOAL_POSTS[0][0] - shot_x, GOAL_POSTS[0][1] - shot_y))) % 360
    deg2 = (360 + degrees(atan2(GOAL_POSTS[1][0] - shot_x, GOAL_POSTS[1][1] - shot_y))) % 360

    # Calculate the difference in angles and return the result
    angle = deg2 - deg1 if deg1 <= deg2 else 360 - (deg1 - deg2)
    print(f"{angle}")
    return angle

def get_pass_shot_zones(x, y):
    """
    Calculates the pass/shot zones on a soccer pitch based on the given coordinates.
    """
    # Initialize the soccer pitch
    pitch = Pitch(line_color='black', pitch_type='statsbomb')

    # Calculate the pass/shot zones and return the result
    ret = pitch.bin_statistic(x, y, None, 'count', bins=[10, 8])
    zones = [(ret["binnumber"][0][i], ret["binnumber"][1][i]) for i in range(len(ret["binnumber"][0]))]
    return zones

В нашем следующем эксперименте давайте посмотрим, сможет ли ChatGPT сделать наш код более кратким. Мы предоставляем ChatGPT блок кода, который вычисляет скалярное произведение, а затем делит его на длину массивов.

a = [1,2,3]
b= [5,6,7]
c = 0
for i in range(len(a)):
    c += a[i]*b[i]
c/=len(a)

ChatGPT отвечает следующим образом: он дает нам два варианта, второй вариант короче и использует функцию zip, другой альтернативой может быть использование функции dot, доступной в такой библиотеке, как NumPy. ChatGPT, напротив, генерирует хорошие комментарии, которые дают понять, чего пытается достичь код.

Представьте себе помощника по программированию, подобного этому, на уроке «Введение в программирование». Студенты смогут изучить различные способы кодирования чего-либо, используя различные библиотеки и функции.

Межъязыковые разговоры

В этом тесте мы хотим проверить, может ли ChatGPT понимать вопросы на одном языке, но отвечать на другом. Мы задаем вопросы ChatGPT на английском и просим отвечать на телугу. Мы предполагаем, что обучающих данных в таком формате очень мало, если они вообще есть, что усложняет задачу.

В целом, ChatGPT, кажется, борется с этой задачей. Его объяснение того, что такое трансформатор, не имело особого смысла, равно как и его ответ на то, что такое столица Индии. Как ни странно, он ответил Навиндрапурамом, местом, о котором мы даже не слышали.

Еще одна поразительная вещь: ChatGPT пытается перевести вопрос с английского на телугу, а затем завершить генерацию. Каждое первое предложение на телугу — это попытка сформулировать вопрос на телугу. Это похоже на попытку реструктурировать задачу в соответствии с настройками одного языка, что теоретически упрощает получение моделью хорошего поколения.

Извлечение информации из отзывов

Сегодня почти все веб-сайты, услуги и продукты запрашивают отзывы клиентов, чтобы продемонстрировать ценность, которую они приносят своим клиентам, а также понять, в чем их недостатки. В то время как организация хотела бы узнать, какие улучшения могут быть сделаны, клиент, который читает отзывы, хотел бы знать о плюсах и минусах данной услуги / продукта и определить, будет ли для них хорошим выбором его покупка или нет.

С помощью ChatGPT мы можем быстро и эффективно извлекать ключевую информацию с разных точек зрения, не заставляя людей просматривать множество отзывов.

В примере мы представляем ChatGPT с обзором выдуманной игры. Мы просим ChatGPT предоставить нам ключевую информацию с точки зрения:

  • Клиент, заинтересованный в покупке игры
  • Создатель игры
  • Платформа, на которой работает игра.

Ответ ChatGPT и то, как он перефразирует свой ответ, чтобы соответствовать точке зрения заинтересованной стороны, впечатляют. Ответ на последний вопрос действительно интересен, потому что ChatGPT упоминает, как Microsoft может связаться с разработчиком игры, чтобы лучше устранить сбои в игре!

Альтернативный мир

В одном из выпусков Подкаста Лекса Фридмана Демисс Хассабис рассказывает о том, что одной из главных задач системы ИИ является оценка ее поведения при изменении правил. В дополнение к этой идее, ChatGPT должен демонстрировать некоторую способность к обучению, когда ему предоставляется обратная связь.

Пытаясь проверить ChatGPT на этих идеях, мы говорим ChatGPT, что находимся в альтернативном мире, и шаг за шагом объясняем, чем альтернативный мир отличается от нашего.

Перестановка слов

Наше первое правило заключается в том, что в новом мире все слова пишутся в обратном направлении. Это может быть сложной задачей для модели ИИ, обученной предсказанию следующего слова, потому что для обучающих данных не является нормальным/частым иметь документы, написанные в обратном порядке, если только это не какой-то вопрос программирования. Посмотрим, сможет ли ChatGPT понять это и правильно действовать в альтернативном мире.

Некоторые из ключевых идей, которые можно извлечь из этого обмена, заключаются в следующем:

  • ChatGPT понимает, что ему нужно инвертировать каждое слово.
  • Когда его спрашивают об обратном написании слова холодильник, он правильно определяет, что допустил ошибку, и может исправить себя, когда его спросят снова. Это показывает способность учиться на отзывах.

Перед словами, обозначающими физические объекты, ставится *

Следующее правило в альтернативном мире состоит в том, что мы добавляем префикс * ко всем словам, которые являются физическими объектами. Тест здесь заключается в том, чтобы проверить, знает ли ChatGPT, какие объекты принимают физическую форму.

Сначала мы были удивлены ответом ChatGPT, так как перед словами an и the стояла звездочка. Попросив ChatGPT объяснить его поведение, мы узнали, что он применяет правило и к абстрактным объектам.

После лучшего понимания аргументации ChatGPT мы дали ему еще одну инструкцию применять правило только к конкретным объектам. ChatGPT теперь мог изменить свое поведение и применить звездочку к слову apple, но не к the и an. Хотя он не применяет его к слову холодильник во второй половине своего ответа, он показывает, что знает, что должен применить его и к холодильнику. Думаю, ИИ тоже не свободен от опечаток.

Самое классное в этом было то, что человек и ИИ могли общаться друг с другом, выявлять несоответствия и разрешать путаницу для достижения цели!

Наша гипотеза о том, почему модель не идеальна для такого рода задач, заключается в том, что мы просим ее генерировать текст, который далек от того, как могут выглядеть ее обучающие данные. Мы буквально просим его сгенерировать новые слова, которые, возможно, никогда раньше не встречались (моделью).

Дополнительные цвета

Затем мы пытаемся исследовать ChatGPT на предмет имеющихся у него знаний о дорожных знаках. Мы спрашиваем, как будет выглядеть знак «Стоп» в альтернативном мире. Это показывает, что он знает, что на знаке остановки есть слова stop, и помнит, что в альтернативном мире он был бы перевернутым.

Мы вводим новое правило, согласно которому в альтернативном мире все цвета будут дополнять наш мир. Этот тест позволяет определить, является ли ChatGPT:

  • Знает цвет стоп-сигнала в нашем мире
  • Имеет отображение дополнительных цветов

Несмотря на то, что ChatGPT немного многословен и нерешителен, в конце концов он заявляет, что знак остановки будет окрашен в зеленый цвет.

В целом этот разговор говорит нам о том, что ChatGPT может

  • Объясните, почему он действует определенным образом
  • Условие генерации языка по новым правилам
  • Включите обратную связь от пользователя, чтобы учиться на его ошибках

Рисование изображений

Это был долгий путь, но нам было интересно, может ли ChatGPT генерировать изображения с использованием текстовых символов. Например, веб-сайты, подобные этому, показывают изображения, созданные с использованием исключительно текстовых символов. К сожалению, ChatGPT еще не оснащен этим навыком и может быть одной из вещей, которые побеждает GPT-4.

Заключение

ChatGPT демонстрирует некоторые замечательные возможности. Это шаг вперед в мире ИИ и возможных приложений ИИ в реальном мире. Однако важно признать, что, несмотря на все усилия OpenAI, многие пользователи продемонстрировали уязвимости, раскрывающие способность ChatGPT создавать дискриминационный, предвзятый, расистский и вредоносный контент. Хотя мы преклоняемся перед огромной ценностью, которую может принести такая технология, мы также должны быть осторожны и бдительны в отношении вреда, который она может нанести людям, если не будут приняты надлежащие меры безопасности.

Если у вас есть интересные эксперименты с ChatGPT, которыми вы хотели бы поделиться с нами, оставьте комментарий ниже! Сайонарадо следующего раза.