Pull to refresh

Comments 26

Интересно же, есть ли у них логика и пространственное мышление)

Вы совсем не знаете, что такое генеративные сети? Что значит "интересно"? Логика и мышление требуют последовательных рассуждений и внутреннего цензора, а текущие сети это прямые преобразователи входа на выход. Без памяти, обратных связей, последовательной работы и самоконтроля. Соответственно, у них нет и не может быть логики и пространственного (и любого другого) мышления, и они гарантированно подвержены бесконтрольным галлюцинациям, как их ни обучай и какого размера их ни делай.

Claude 3 Opus и GPT4 показали ведь хорошее решение в задачке

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

Ну, они же созданы не чтобы понимать, а чтобы угождать ) Как менеджер продажник примерно.

Я кстати тоже проверял все перечисленные модели. Первый мой вопрос: "На ветке сидело 8 ворон, охотник застрелил одну, сколько осталось". Второй вопрос: "Кирпич весит 1кг плюс ещё половина кирпича, сколько весит кирпич". Из open weight моделей только мика справилась с первого раза без подсказок.

Встречный вопрос, много ли ЛЮДЕЙ сумеют решить эту задачу в уме, без бумажки с ручкой?

Почему все ожидают от языковой модели внутренних рассуждений, когда как она действует почти интуитивно, делая буквально считанные шаги (фиксированный набор, скорее всего количество зависит от количества слоев сети) размышлений, в некоторых случаях эти шаги можно расширить, добавив магическое think step by step.

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

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

Работайте с ИИ на английском.

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

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

внешние костыли и нужны чтобы обойти эти ограничения.

Проверил на английском: ни GPT 4, ни Gemini 1.5 Pro не справились

Нужна только обучающая выборка чуть побольше, и оно точно начнёт логически мыслить.

«Надо просто верить, этого вполне достаточно»

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

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

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

а сама логика задача была изменена? это тоже необходимо делать для корректности теста

@rPman

Встречный вопрос, много ли ЛЮДЕЙ сумеют решить эту задачу в уме, без бумажки с ручкой?

но у сети же просят именно решение "с бумажкой и ручкой". аналог решения в уме для сетки - это генерация ответа в виде одного единственного токена, который бы кодировал ответ.

есть мнение что сама архитектура gpt не позволит делать это для любых задач

практически ни для каких не сможет, на самом деле - все, что не может сделать КА, не сможет сделать и гпт (если точнее - это потребует экспоненциального роста числа параметров в зависимости от размера задачи).

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

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

Еще пример, я писал переводчик художественной литературы на основе gpt, отдельный модуль собирает информацию о персонажах и локациях, другой определяет какая часть информации должна быть добавлена в контекст, третья собирает уже готовые переведенные части и добавляет их в промпт как few-shot механизм (часть перевода - с ручной корректировкой)... т.е. это не то же самое что закинуть тупо всю книгу в модель и ожидать что она все переведет, результат в лучшем случае будет с большим количеством ошибок.

На английском результаты будут лучше.

Проверил на английском: ни GPT 4, ни Gemini 1.5 Pro не справились

ChatGPT 4 Выдал такой код, но не смог его воспроизвести из-за длительного времени выполнения:


from itertools import permutations # Define the possible attributes for each of the warehouses colors = ['зеленый', 'желтый', 'синий', 'белый', 'красный'] professions = ['каменщик', 'портной', 'электрик', 'плотник', 'программист'] animals = ['леопард', 'пума', 'медведь', 'тигр', 'крокодил'] foods = ['котлета', 'хлеб', 'пельмени', 'макароны', 'пицца'] drinks = ['коньяк', 'вино', 'водка', 'ром', 'виски'] # Generate all possible arrangements for color_perm in permutations(colors): for profession_perm in permutations(professions): for animal_perm in permutations(animals): for food_perm in permutations(foods): for drink_perm in permutations(drinks): # Check the given conditions if color_perm.index('зеленый') != profession_perm.index('каменщик'): continue if profession_perm.index('портной') != animal_perm.index('леопард'): continue if color_perm.index('желтый') != food_perm.index('котлета'): continue if profession_perm.index('электрик') != food_perm.index('хлеб'): continue if color_perm.index('желтый') - 1 != color_perm.index('синий'): continue if drink_perm.index('коньяк') != animal_perm.index('пума'): continue if color_perm.index('белый') != drink_perm.index('вино'): continue if food_perm[2] != 'пельмени': continue if profession_perm[0] != 'плотник': continue if abs(drink_perm.index('водка') - animal_perm.index('медведь')) != 1: continue if abs(animal_perm.index('тигр') - drink_perm.index('вино')) != 1: continue if drink_perm.index('виски') != food_perm.index('макароны'): continue if profession_perm.index('программист') != drink_perm.index('ром'): continue if 1 not in [abs(color_perm.index('красный') - profession_perm.index('плотник')), color_perm.index('красный')]: continue # If all conditions are met, print the result idx_pizza = food_perm.index('пицца') idx_crocodile = animal_perm.index('крокодил') profession_pizza = profession_perm[idx_pizza] profession_crocodile = profession_perm[idx_crocodile] print(f"Кто ест пиццу: {profession_pizza}, кто держит крокодила: {profession_crocodile}") break

Output:
Кто ест пиццу: плотник, кто держит крокодила: программист

"It seems that solving the puzzle through brute force permutations took too long."
"It seems that solving the puzzle through brute force permutations took too long."


Так что по факту он справился, только его вычислительные ресурсы искусственно ограничены.

Оно не умеет отсекать тупиковые ветки, что достигается простым подтягиванием условий в тот цикл, где эти условия разрешимы. Если пофиксить это и еще пару косяков - решает мгновенно.

Боюсь-боюсь.

from itertools import permutations

# Define the possible attributes for each of the warehouses
colors = ["зеленый", "желтый", "синий", "белый", "красный"]
professions = ["каменщик", "портной", "электрик", "плотник", "программист"]
animals = ["леопард", "пума", "медведь", "тигр", "крокодил"]
foods = ["котлета", "хлеб", "пельмени", "макароны", "пицца"]
drinks = ["коньяк", "вино", "водка", "ром", "виски"]
# Generate all possible arrangements
for color_perm in permutations(colors):
    if color_perm.index("желтый") - 1 != color_perm.index("синий"):
        continue
    for profession_perm in permutations(professions):
        if profession_perm[0] != "плотник":
            continue
        if abs(color_perm.index("красный") - profession_perm.index("плотник")) != 1:
            continue
        if color_perm.index("зеленый") != profession_perm.index("каменщик"):
            continue
        for animal_perm in permutations(animals):
            if profession_perm.index("портной") != animal_perm.index("леопард"):
                continue
            for food_perm in permutations(foods):
                if food_perm[2] != "пельмени":
                    continue
                if color_perm.index("желтый") != food_perm.index("котлета"):
                    continue
                if profession_perm.index("электрик") != food_perm.index("хлеб"):
                    continue
                for drink_perm in permutations(drinks):
                    # Check the given conditions
                    if drink_perm.index("коньяк") != animal_perm.index("пума"):
                        continue
                    if color_perm.index("белый") != drink_perm.index("вино"):
                        continue
                    if abs(drink_perm.index("водка") - animal_perm.index("медведь")) != 1:
                        continue
                    if abs(animal_perm.index("тигр") - drink_perm.index("вино")) != 1:
                        continue
                    if drink_perm.index("виски") != food_perm.index("макароны"):
                        continue
                    if profession_perm.index("программист") != drink_perm.index("ром"):
                        continue
                    # If all conditions are met, print the result
                    idx_pizza = food_perm.index("пицца")
                    idx_crocodile = animal_perm.index("крокодил")
                    profession_pizza = profession_perm[idx_pizza]
                    profession_crocodile = profession_perm[idx_crocodile]
                    print(
                        f"Кто ест пиццу: {profession_pizza}, "
                        f"кто держит крокодила: {profession_crocodile}"
                    )

у чатгпт нет ни каких "вычислительных ресурсов", тем более ограниченных.

Есть, если ему дать задачу на вычисление, он сначала пишет код под плашкой:

Как он закончит он выдает результат выполнения.

Кто-то из кожаных мешков смог логически решить эту задачу? Я только до пиццы дошёл.

Я только до пиццы дошёл.

Второй дом.
Ищем "напиток" для второго дома, для которого уже известны "цвет Красный" и "животное Тигр".
"Коньяк" исключается типом животного (по условиям это Пума).
"Вино" исключается потому что уже вычислено для первого дома.
Допустим "Ром", тогда профессия "Программист". Остается "еда". Не Пельмени(дом не центральный), не Пицца(вычислено для первого). Не Котлета(дом не желтый). Не Макароны(они там где Виски). Не Хлеб(его ест Электрик). Значит "Ром" не дает допустимых сочетаний с "едой" для второго дома.
Допустим "Виски", тогда еда "Макароны". Остается "профессия". Не Плотник(он в первом доме). Не Электрик(он есть Хлеб). Не Программист(он с... пьет Ром). Не Портной(у него Леопард). Не Каменщик(он в Зеленом). "Виски" не дает допустимых сочетаний с "профессией" для второго дома.
Значит "Водка" единственный вариант для второго дома.
Теперь для второго дома известны "цвет Красный", "животное Тигр" и "напиток Водка".
Ищем для него "профессию".
Не Программист(ему нужен Ром. пират хренов). Не Плотник(он в первом). Не Портной(он живет с Леопардом). Не Каменщик(он в Зеленом)
Значит единственный вариант для второго дома это "Электрик". А он по условиям ест "Хлеб".

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

Оно не умеет перебором, ибо, не умеет в последовательные действия.

корректно ли требовать от LLM решить логическую задачу перебором

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

Sign up to leave a comment.

Articles