Яндекс GPT и программирование на MQL4 - страница 6

 
Andrey Dik #:

ЗЫ. Если может быть заметили, я конструктивно критикую ИИ, его возможности не безграничны и их (возможности и ограничения) просто нужно четко понимать и не строить иллюзий.

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

 
Как я себе представляю, если от ИИ нужно получить точный ответ, то тут два варианта: либо его нужно записать в ИИ как аксиому и доставать по необходимости, либо перебор всех вариантов, на которые не хватит времени жизни. Первый вариант - это просто запись без "творчества", второй пока отпадает. Если включить творчество, то будут возникать ошибки. Как-то нужно склеить аксиомы с творчеством, здесь твори, а здесь ни ни.)
 
Aleksei Stepanenko #:
Как я себе представляю, если от ИИ нужно получить точный ответ, то тут два варианта: либо его нужно записать в ИИ как аксиому и доставать по необходимости, либо перебор всех вариантов, на которые не хватит времени жизни. Первый вариант - это просто запись без "творчества", второй пока отпадает. Если включить творчество, то будут возникать ошибки. Как-то нужно склеить аксиомы с творчеством, здесь твори, а здесь ни ни.)

Для первого варианта ИИ не нужен :)

 
Интересно - хоть кому-то удалось получить от ChatGPT и ему подобных код, который хотя бы компилировался без правок ?
 
Да согласен, но для удобства нам нужен один собеседник без дополнительного справочника. Пусть будет справочник непреложных истин у него внутри.
 
Ihor Herasko #:

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


Вот, это как раз очень интересное явление, когда ИИ может проводить аналогии. Это не просто глюк, это предположение, что если есть такое ключевое слово в языке mql5, то возможно есть и по анологии с ним, но для другой конкретной ситуации. ИИ этому не учили, но он предлагает свой вариант за неимением подходящего в своих знаниях. А человек волен принять вариант ИИ или отвергнуть.
ИИ не имеет "под рукой" компилятор, чтобы проверить свою гипотезу, если бы был, то и вариант ответа получился иным. Другими словами, ИИ повел себя также, как бы поступил человек в подобной ситуации.

Проблема в том, что человеку, зачастую, нужен "лучше, чем человек", когда он работает с ИИ.

У разных моделей llm свои сильные и слабые стороны, просто нужны некоторые навыки для работы с ним.


 
Walerij75 #:
Интересно - хоть кому-то удалось получить от ChatGPT и ему подобных код, который хотя бы компилировался без правок ?

Да. Регулярно.

Надо помнить, что какой вопрос - такой ответ. Т.е. точно понимать, что может GPT, а чего не может НА ДАННЫЙ момент. 

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

Если это понимать, то GPT окажется очень полезен, может избавить от рутинной работы. При этом не надо забывать, что GPT непрерывно учится, в том числе на вопросах.

 
Walerij75 #:
Интересно - хоть кому-то удалось получить от ChatGPT и ему подобных код, который хотя бы компилировался без правок ?

и сразу грааль желательно?)

 

CHATGPT от сбера

Летом этот гпт ничего не знал про R и отвечал только на питоне.

Теперь задаю вопрос:

как улучшить качество ответов по программированию на R

и получаю ответ. Обратите внимание ссылки на ресурсы. Прогресс, однако


Для того чтобы улучшить качество ответов по программированию на языке R, можно следовать нескольким рекомендациям:


### 1. Четко формулируйте вопросы

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


Пример:

```

# Нужно посчитать среднее значение столбца 'age' в датафрейме df

df <- data.frame(age = c(25, 30, 35))

mean(df$age)

```


### 2. Используйте минимально воспроизводимый пример (MRE)

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


Пример MRE:

```R

# Минимальный пример

df <- data.frame(age = c(25, 30, 35))

mean(df$age)

```


### 3. Указывайте ожидаемый результат

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


Пример:

```

# Ожидаю получить среднее значение возраста равное 30

mean(df$age)

```


### 4. Учитесь на своих ошибках

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


### 5. Изучайте документацию и примеры

Язык R имеет обширную документацию и множество онлайн-ресурсов, таких как Stack Overflow, GitHub и специализированные форумы. Ознакомьтесь с ними, чтобы узнать о лучших практиках программирования на R.


### 6. Практикуйте регулярные упражнения

Решайте задачи на платформах вроде Kaggle, LeetCode или HackerRank, чтобы совершенствовать свои навыки программирования на R. Регулярная практика помогает закрепить знания и повысить уровень мастерства.


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

 

А вот пример содержательного ответа.

Вопрос:

Чем отличаются пакеты gbm от ada в R

В библиотеке R есть несколько пакетов для работы с градиентным бустингом (gradient boosting), среди которых выделяются gbm и ada. Эти два пакета используют разные алгоритмы градиентного бустинга, хотя оба предназначены для решения задач классификации и регрессии. Давайте рассмотрим их различия:

Пакет gbm

Пакет gbm реализует алгоритм градиентного бустинга деревьев (Gradient Boosted Trees). Этот пакет основан на подходе Фридмана (Friedman), который использует метод наименьших квадратов для минимизации ошибки на каждом шаге обучения модели. Основные особенности этого пакета включают:

  • Алгоритм: Использует деревья решений (decision trees).
  • Функция потерь: Поддерживает различные функции потерь, такие как гауссовская (для регрессии), девиантность (для бинарной классификации) и мультиклассовая девиантность (для многоклассовой классификации).
  • Параметры: Можно настраивать параметры, такие как количество деревьев ( n.trees ), глубина дерева ( interaction.depth ) и размер выборки для каждого дерева ( bag.fraction ).
  • Применение: Подходит для широкого спектра задач, включая регрессию и классификацию.

Пример использования:

library(gbm) data(iris) model <- gbm(Species ~ ., data = iris, distribution = "multinomial")

Пакет ada

Пакет ada реализует адаптивный бустинг (AdaBoost). В отличие от gbm, этот пакет ориентирован исключительно на задачи классификации. Алгоритм AdaBoost был предложен Йоавом Фройндом и Робертом Шапиром и является одним из первых методов бустинга. Особенности пакета ada:

  • Алгоритм: Используется подход адаптивного бустинга (AdaBoost), где каждый новый классификатор обучается на данных, взвешенных предыдущими ошибками.
  • Функции потерь: Поддерживается только бинарная классификация.
  • Параметры: Можно настраивать количество итераций ( iter ), а также начальный вес ошибок ( nu ).
  • Применение: Хорошо подходит для задач бинарной классификации, особенно когда требуется высокая точность.

Пример использования:

library(ada) data(iris) # Преобразуем Species в фактор с двумя уровнями iris$Species <- factor(ifelse(iris$Species == 'setosa', 'setosa', 'other')) model <- ada(Species ~ ., data = iris, type = "discrete")

Ключевые отличия

  1. Тип решаемой задачи:
    • gbm: Может использоваться как для регрессии, так и для классификации (включая многоклассовую).
    • ada: Применяется только для бинарной классификации.
  2. Алгоритмы:
    • gbm: Использует градиентный бустинг деревьев.
    • ada: Использует адаптивный бустинг (AdaBoost).
  3. Поддержка функций потерь:
    • gbm: Поддерживает разнообразные функции потерь для различных типов задач.
    • ada: Ограничена функцией потерь для бинарной классификации.
  4. Настраиваемые параметры:
    • gbm: Имеет больше параметров настройки, таких как глубина дерева и доля выборки.
    • ada: Меньше параметров настройки, но они могут быть критичны для повышения точности.

Таким образом, выбор между этими пакетами зависит от конкретной задачи и требований к модели. Если вам нужно решать задачу регрессии или многоклассовой классификации, то лучше использовать gbm. Для бинарных классификационных задач ada может предложить хорошие результаты благодаря своей специализации.

Точный и полный ответ.


Чудеса, однако
 напоминаю, еще летом этот гпт не знал про R