Комментарии 69
зачем на хабре мусор, сгенеренный в ии да еще и с нерабочими ссылками?
Все ссылки проставлены автором оригинальной статьи. Две из них действительно перестали открываться. Я их скрыл, чтобы не отнимать время читателя. Благодарю за внимательность!
Что касается самого материала, то меня он привлек тем, что как раз об этом же — пределе возможностей нейросетей — недавно размышлял сам. Тема интересна мне — я подумал, что она также будет интересна кому‑то еще.
P.S. Промахнулся слегка. Это комментарий — ответ на замечания выше.
Автор так сильно увлёкся ИИ-хайпом, что не заметил, что проблемы описанные в статье касаются только конекционистских архитектур (LLM, CNN, RL, MoE) и частично нейро-символьных систем (где ядром является "нейро"-составляющая), а у других архитектур таких проблем нет, таких как: Symbolic AI (в том числе - когнитивно-символьные (КСС)), Embodied AI, SNN и других.
Чел, кончай уже ныть про то, какие символьные ИИ крутые. Эта технология себя исчерпала и благополучно сдохла ещё в 90-х, и туда ей и дорога. Пытаться из неё что-то выжимать в 2k26 году - занятие для ретроградов и маразматиков.
А когда то казалось что конекционистских перцептроны (придуманные чуть ли не первыми!) и им подобные - сдохли. Прошли десятки лет, появились мощные и дешевые массивно-параллельные векторно-конвеерные сопроцессоры и технологии по работе с ними (надо ж воду красиво рисовать!), а потом десятка лет не прошло как придумали как это под конекционистские модели задействовать а затем - решили проверить что будет если попробовать обучение того что тогда казалось большими моделями (с сотнями миллионов весов) том что тогда казалось большими данными. И пошло-поехало...
Но - может ж быть еще один прорыв.
Сколько существуют коннекционисты и символисты, столько они и "воюют" - этот холивар старше, чем большинство современных языков программирования. В истории "ИИ маятник" постоянно качался, и на каждом изломе даже появлялись свои "перебежчики": Марвин Минский (коннекционизм->символизм), Ян ЛеКун (коннекционизм->JEPA (среднее между тем и тем)), Себастьян Бубек (коннекционизм->символизм) ну и обратно: Терри Виноград (символизм->коннекционизм), Джон Хопфилд (символизм->коннекционизм)
Может. Но нет ни одной причины ждать этого прорыва от символистов.
Больше шансов что квантовые компьютеры станут чем-то полезным в ближайшие 10 лет и прорыв придёт оттуда.
И я говорю "больше", но этот шанс абсолютно крохотный. Просто у символистов ещё меньше. Символьные подходы зашли в тупик давно и прочно, и масштаб дел не исправляет. Тогда как масштабирование коннекционизма даёт гибкие, мощные и до смешного человекоподобные системы.
Вы восторгаетесь мощью масштабирования? Тогда ответьте на простой вопрос: Когда мы увидим боевой самолет под управлением ЛЛМ? Или вы предлагаете пустить вслед за истребителем на буксире мобильный дата-центр мощностью в несколько гигаватт, чтобы ваша "гибкая система" могла в реальном времени отличить помеху от цели? А для эскадрильи самолётов сколько надо создать мобильных дата-центров? И где гарантии того, что при первой же галлюцинации одного самолета они вступят в бой друг с другом? Здесь Вы правы, будет масштабно - взрывы и фейерверки, самолёты из одной эскадрильи уничтожают друг друга
Я так понимаю - это тоже масштабно: "ИИ-кластер xAI Colossus 2 потребляет 1 ГВт мощности — больше, чем Сан-Франциско" (Хабр) - для системы, которая галлюцинирует нужен 1ГВт? И это я еще не упоминал про масштабный рост цен по всему миру на железо
Зачем истребителю датацентр? LLM работают и локально, на зубилах вроде 4080.
Если нам нужны системы под автомобили или роботехнику, к чему "управление истребителями" ближе всего, то тут вообще радость и прелесть. Передовые ИИ такого типа - гибридные VLA, асимметричные трансформеры - меньше 30B, и при сильном желании упихиваются в современный смартфон.
Датацентры нужны не для запуска ИИ. Датацентры нужны для тренировки следующих поколений ИИ, и запуска ИИ под десятки миллионов пользователей одновременно. Истребитель уже натренирован, и "пользователей" у него очень мало.
Ну и если ты думаешь что какая-то "новая волшебная архитектура" избавит ИИ от галлюцинаций, то ты сильно ошибаешься. Галлюцинации - это проблема не архитектуры, а обучения. И "референсные" мешки с мясом, у которых обучение иное, огибают проблему галлюцинаций далеко не идеально. Фразы вроде "врёт как очевидец" появились не просто так.
Сэр, а с чего Вы вдруг заговорили о гибридах? Вы же всегда были "чистым" коннекционистом. Что-то случилось?! Что-то заставило пересмотреть взгляды?
Помимо чистых КСС, я неоднократно говорил, что будущее за нейро-символьными архитектурами, но при одном условии - ядром системы должна являться КСС, а нейросеть в таком союзе - это лишь эффективный "орган чувств" ("глаза" и "уши"), но не центр принятия решений.
Что касаемо галлюцинаций - обучение (RLHF и прочее) может лишь снизить их частоту и "причесать" ответ, но не исключить.
Сравнение с "зубилами 4080" и смартфонами уместно для бытовых чат-ботов, но не для управления истребителем. В программах вроде ACE и ACE-TRUST (DARPA) вычисления вынесены в выделенный специализированный вычислительный контур. Главное преимущество КСС здесь не в объеме памяти под веса, а в скорости логического цикла. Пока нейросеть тратит секунды на вероятностную генерацию токенов, символьное ядро выполняет детерминированный цикл OODA ("наблюдение-ориентация-решение-действие") за милисекунды. В бою на сверхзвуке, любая задержка - это не просто "медленный ответ", это потеря машины
Под гибридами я имею в виду вещи вроде CNN-backed ViT, DiT, рекуррентных трансформеров (включая HRM), трансформеров со state space компонентами, и прочих вариаций на тему "пришьём идеи из старых архитектур к трансформерам и посмотрим взлетит ли".
Что характерно, часто взлетает. А тем временем есть ли хоть какие-то успехи у символьных подходов в последние годы? Ну, только если считать Claude Code технически нейросимвольной системой.
Вообще говоря границы стёрты между символьными и коннекторами благодаря впихиванию в окно 8 бит. Фактически, имеем виртуальную машину с 256 командами. Умножение на 0 и 1 это как if-else вполне возможно впихнуть туда конечные автоматы (запоминание контекстного окна) и описание логических схем на уровне LUT той же размерности (вывод и оптимизация), плюс 2 вида фундаментальных нейронов ReLU и логистический на barrel-shifter. Важно ещё как всё это дело обучать. В этом смысле обратное распространение заменяется градиентом более высокого порядка вплоть до табличного на 65536 значений, когда ввиду малой разрядности сразу можно рассчитать веса на пару слоёв вперёд. То есть обучение и прямое распространение... две стороны одной медали и можно одно с другим совместить, этакая сеть Хоупфилда с решением СЛАУ на 256 переменных.
Истребители устарели.
Дело вовсе не в истребителях, надо смотреть дальше и глубже. Успешное внедрение КСС в авиации - это не про "железо" и не про код, а про валидацию технологии управления в экстремально сложных средах. Это внедрение показывает нам будущее, где КСС постепенно забирают у нейросетей самое важное, оставляя им лишь роль "обслуживающего" сервиса:
Динамическое планирование (Mission Planning) - мы забираем у нейросетей задачу принятия решений в условиях OOD (Out-of-Distribution). В отличие от ЛЛМ, которая "галлюцинирует" план на основе средних данных, КСС на базе Soar или ACT-R строит логически безупречную стратегию, исходя из физических инвариантов и текущих целей. Это применимо везде: от беспилотной логистики до управления умными городами;
Символьное зрение (Symbolic Vision) - истребитель "учит" нас тому, что нейросеть должна перестать быть лишь "глазами" (детектором), а КСС - "мозгом", который интерпретирует сигналы. У коннекционистов больше не будет "монополии" на "понимание" сцены. КСС сама будет знать что перед ней, верифицируя объекты через образы и символы и всё это в реалтайме;
и многое другое.
Истребители - это как самая жёсткая школа, но для ИИ. То, что "выживет" и докажет свою эффективность - "завтра" станет стандартом для гражданской медицины, автономного транспорта, глобальных систем безопасности и других отраслей науки и техники.
Я интересуюсь символьными системами, и хотел бы попросить ссылок, которые помогли бы восполнить пробелы в этой области. Особенно интересны те, которые позволили бы больше понять как развивались подходы и те, которые объясняют текущее состояние в этой области
Герберт Саймон, "Науки об искусственном" (The Sciences of the Artificial) - На русском есть хорошее издание, перевод вполне адекватный. книга о том, как из простых правил рождается сложное поведение;
Аллен Ньюэлл, "Единые теории познания" (Unified Theories of Cognition) - На русском есть старые переводы, но лучше оригинал 1990 года. Она сложная, но переворачивает сознание. Это "библия" для понимания архитектуры разума. Ньюэлл там объясняет, как устроено пространство задач и почему интеллект - это структура;
Джон МакКарти. У него нет ни одной книги, а есть его статьи по теме Formalizing Common Sense. Это база для понимания того, как ИИ должен оперировать логикой мира;
Джон Лэрд, "The Soar Cognitive Architecture". Читать строго на английском, так как терминология очень - "специфическая".
Если английский позволяет, то читайте в оригинале. Термины вроде chunking, production rules, working memory в русском переводе иногда теряют инженерный смысл. Начинайте с Саймона, он заходит легче всего, а потом сразу к Ньюэллу и по списку.
Спасибо. А какие проекты стоит изучить, из тех что демонстрируют state-of-art сегодня?
Обратите на внимание на проект - https://github.com/SoarGroup/rosie-project - Rosie от SoarGroup. В отличие от LLM, Rosie обучается новым задачам через инструкции на естественном языке, сразу встраивая их в свою символьную структуру.
OpenCog Hyperon - Архитектура на базе гиперграфа знаний (AtomSpace). Они представили язык MeTTa, который позволяет объединять нейросети, логический вывод и эволюционные алгоритмы в одной системе.
По SOTA в JEPA от Яна ЛеКуна пока мало информации, проект еще развивается, пока еще исследовательский фронтир (World Models). Проект движется в сторону "машинного здравого смысла" (Common Sense, о котором писал МакКарти) через понимание физики мира, что идеологически очень близко к КСС
Ну закончится масштабирование, и ладно. ИИ-инструменты можно неслабо совершенствовать даже не меняя модели. И даже если через какой год всё это дело остановится, все эти вайб-кодинги никуда не денутся, и скорее всего останутся с нами навсегда.
вайбкодинг это просто язык программирования верхнего уровня, доступный человеку в виде разговорной речи, для которого С++/Python/Go/JS/Shell/make/git далее по списку есть ассемблер.
Меня смущает недетерминированность такого языка программирования. Если обычный компилятор работает не правильно, то это баг и его можно исправить. Если ИИ гонит, то выкручивайся сам, некуда репортить о глюках.
гонимость ИИ исправляется соответствующей обратной связью парирования глюков. То есть его пытают до тех пор, пока assertion не покажет 0=0 или что всё доводится детерминированными алгоритмами до errors 0 warnings 0. Это не свойство самого ИИ а свойства языка человеческого общения которое подразумевает варианты, вообщем это некоторая эмоциональность в кодовой базе, как реакция Линуса на некоторые предложения по улучшению ядра. А вот о глюках как раз таки можно сообщать самому ИИ, даже в автоматическом режиме, производя дообучение модели. Промпт должен содержать критерии проверки результата, то есть задача описывается декларативно с заданными ограничениями. Если решение в них вписывается - оно получено.
А есть гарантия, что процесс сходящийся?
Просто у меня есть опыт хождения нейронкой по кругу
тогда надо разбивать на мелкие сущности и заставлять дела меньшую работу, вмещаемую в контекстное окно. То есть не более 2к строк любого кода с подробным описанием. Вообще говоря разбиение и описание взаимодействия и есть собственно промпт-инженеринг, чтобы исключить циклы при оптимизации или при обратной связи от внешних инструментов (компиляторы, shell и др). Иногда бывает проще интерпретировать вывод и адаптировать для промпта указав диапазон проблемы чем искать точку. В этом смысле это искусство, когда человек в большей мере представляет глобальный минимум, нежели когда ИИ рыскает в локальном, но при этом достаточно быстро достигает общего экстремума если задать верно начальное условие и направление.
В этом смысле это искусство
Вот эта часть мне не нравится. Сам программирую с курсором, но конечный этап работы - это код, за который я несу ответственность. Код "человекосовместимый".
Есть примеры реп, где код вообще не пишется руками, а целиком генерится по промтам? Для меня утверждение, что "просто язык программирования верхнего уровня" звучит так, что у нас просто есть код, над которым мы ведем итеративную работу, а весь софт создаётся автоматом из репы где нет классического кода.
Простой проект уровня например, монитора порта с выводом на экран и общением по usbtty вполне можно теперь делать промптами без единой сточки кода вручную, сам себе сделал несколько мониторов. Плюс по мелочам различного рода генерировалки изображений, парсеры, утилиты, обработчики, тесты. То есть вот эта вся возня и занимает порой пожалуй 95% времени, когда ключевой аспект алгоритма или матаппарат делается за 5 в виде пары формул. ИИ позволяет в существенной мере автоматизировать эту рутину, особенно что касается рефакторинга а уж тем более генерации доков, графиков, обработки данных, приведение данных в формат для последующей итерации. Незаменимый инструмент вот уже более двух месяцев. Перефразируя классику: 128 кБ контекстного окна хватит всем.
Если это небольшой законченный проект - то норм, обвязку сгенерит. Если что-то большое, то нужен глаз да глаз. Но программировать всё равно нужно уметь.
Вот тут у многих недопонимание. Программировать - это фактически рисовать элементы абстрактного синтаксического дерева в виде блок-схем по ГОСТ 19.701-90. Вне этого - просто изучение синтаксиса языков программирования для ввода в ЭВМ этой блок-схемы. В подавляющем большинстве бухгалтерских задач хватит Fortran образца конца 50-х, собственно он и есть - транслятор формул. Всё остальное строго говоря программированием не является а есть реализация протоколов и API согласно некоего коллективного ТЗ. Тот же самый С создан Риччи и Керниганом образно говоря в курилке Bell Labs просто как хороший и удобный инструмент. И куда не ткни везде примерно такой подход. Это уже потом накрутили это как общепромышленный или международный стандарт. Вообщем нарочно не придумаешь. Так вот ИИ и предлагает принципиально новую парадигму минуя этап структурирования и проектирования объектов (это в подавляющем большинстве случаев справочный шаблон) а непосредственную реализацию последовательности действий или конечного результата и не важно на какой платформе или фреймворке это сделано.
Я разрабатывают бэкенды и вообще не представляю как может выглядеть:
минуя этап структурирования и проектирования объектов (это в подавляющем большинстве случаев справочный шаблон) а непосредственную реализацию последовательности действий или конечного результата
Можешь показать как выглядит новая парадигма?
Самый краткий пример. Заходим на Сбер-Гигачат и просим сгенерировать объекты в общем виде. Например, задать массив начальных координат окружностей и их диаметров, располагаемых внутри квадрата 640x480, причём диаметры случайные и не превышают от 1/10 до 1/3 величины экранной области. Координаты внутри области. Сетка только целочисленная. Итак.
Промпт 1. Make a python script contains screen size of 640 x 480 with array of array of [x0,y0 and d] of some circles
import matplotlib.pyplot as plt
# Screen resolution (width x height)
screen_width = 640
screen_height = 480
# List of circles, each represented by [x_center, y_center, diameter]
circles_data = [
[100, 100, 50], # Circle at position (100, 100), diameter=50
[200, 200, 70], # Circle at position (200, 200), diameter=70
[300, 300, 30], # Circle at position (300, 300), diameter=30
[400, 400, 60], # Circle at position (400, 400), diameter=60
[500, 50, 40], # Circle at position (500, 50), diameter=40
]
fig, ax = plt.subplots(figsize=(screen_width/100, screen_height/100)) # Convert pixel units to inches for figure size
for data in circles_data:
x, y, d = data
radius = d / 2 # Diameter divided by 2 gives radius
# Create a circle patch object centered at (x, y) with given radius
circle = plt.Circle((x, y), radius, edgecolor='black', facecolor='none')
ax.add_patch(circle)
ax.set_xlim([0, screen_width])
ax.set_ylim([0, screen_height])
plt.axis('equal') # Ensure equal scaling between X and Y axes
plt.title("Circles Visualization")
plt.show()
Вполне рабочий вариант. Мы создали объекты в виде массива в массиве. Теперь просим инкапсулировать данные в объект. Объект - это формальный контейнер для данных, имеющий неявный идентификатор. Методы объекта - имеют неявный идентификатор - указатель на объект (его местоположение). Пишем.
Промпт 2. make cirles as class incapsulate x0 y0 and diameter
import matplotlib.pyplot as plt
class Circle:
def __init__(self, x0, y0, diameter):
self.x0 = x0 # Center coordinate along x-axis
self.y0 = y0 # Center coordinate along y-axis
self.diameter = diameter # Diameter of the circle
@property
def radius(self):
return self.diameter / 2 # Radius calculation (diameter / 2)
def draw(self, ax):
"""
Draws the circle on provided Axes object 'ax'.
"""
circle_patch = plt.Circle(
(self.x0, self.y0),
self.radius,
color="blue",
fill=False,
linewidth=2
)
ax.add_patch(circle_patch)
# Set up the display window dimensions
screen_width = 640
screen_height = 480
# Define some circles with various positions and sizes
circle1 = Circle(x0=100, y0=100, diameter=50)
circle2 = Circle(x0=200, y0=200, diameter=70)
circle3 = Circle(x0=300, y0=300, diameter=30)
circle4 = Circle(x0=400, y0=400, diameter=60)
circle5 = Circle(x0=500, y0=50, diameter=40)
# Prepare the plot
fig, ax = plt.subplots(figsize=(screen_width/100, screen_height/100))
# Add each circle to the plot
for c in [circle1, circle2, circle3, circle4, circle5]:
c.draw(ax)
# Adjust axis limits and aspect ratio
ax.set_xlim(0, screen_width)
ax.set_ylim(0, screen_height)
ax.set_aspect('equal') # Equal scaling ensures circles appear circular not oval
# Show the final visualization
plt.title("Collection of Circles")
plt.show()
Получили всё тоже самое. Теперь модернизируем объекты в иерархию - добавим обычные круги и цветные а также сделаем итерацию по объектам динамическую - то есть вызов функции по указателю, являющимся фактически идентификатором объекта (таблица виртуальных функций с индексом/списком switch-case как угодно)
make a colored circle as subclass to base circle without color and make dynamic behaviour
import matplotlib.pyplot as plt
import numpy as np
# Base class representing non-colored circles
class BaseCircle:
def __init__(self, x0, y0, diameter):
self.x0 = x0 # x-coordinate of center
self.y0 = y0 # y-coordinate of center
self.diameter = diameter # Diameter of the circle
@property
def radius(self):
return self.diameter / 2 # Compute radius from diameter
def draw(self, ax):
"""Draws the outline of the circle."""
circle_outline = plt.Circle(
(self.x0, self.y0),
self.radius,
color="black",
fill=False,
linewidth=2
)
ax.add_patch(circle_outline)
# Subclass extending BaseCircle with color capability
class ColoredCircle(BaseCircle):
def __init__(self, x0, y0, diameter, color):
super().__init__(x0, y0, diameter) # Initialize parent class attributes
self.color = color # Additional color attribute
def draw(self, ax):
"""Draws the filled circle with chosen color."""
circle_filled = plt.Circle(
(self.x0, self.y0),
self.radius,
color=self.color,
fill=True,
alpha=0.7, # Translucent appearance
linewidth=2
)
ax.add_patch(circle_filled)
# Screen settings
screen_width = 640
screen_height = 480
# Colors for ColoredCircle instances
colors = ['red', 'green', 'blue', 'cyan']
# Generate random circles dynamically
base_circles = [] # Collection of BaseCircle instances
colored_circles = [] # Collection of ColoredCircle instances
for _ in range(10): # Total 10 random circles
x0 = np.random.randint(screen_width//10, screen_width-screen_width//10)
y0 = np.random.randint(screen_height//10, screen_height-screen_height//10)
diameter = np.random.uniform(20, 100)
# Decide whether it's a base circle or colored circle
if np.random.rand() > 0.5: # Probability-based decision
# Colored circle
selected_color = np.random.choice(colors)
col_circle = ColoredCircle(x0, y0, diameter, selected_color)
colored_circles.append(col_circle)
else:
# Regular circle
base_circle = BaseCircle(x0, y0, diameter)
base_circles.append(base_circle)
# Drawing procedure
fig, ax = plt.subplots(figsize=(screen_width/100, screen_height/100))
# Render all base circles first
for bc in base_circles:
bc.draw(ax)
# Then render all colored circles
for cc in colored_circles:
cc.draw(ax)
# Configure plot layout
ax.set_xlim(0, screen_width)
ax.set_ylim(0, screen_height)
ax.set_aspect('equal') # Ensures proper scaling
plt.title("Dynamically Generated Base vs Colored Circles")
plt.show()
В этой схеме мне важно указать не абсолютные данные в объекте а относительные, то есть что привносится, а что удаляется (на C++ это private) а то как реализовать поведение - отдельный вопрос. В коде видно, что ИИ разделил поведение без виртуальных функций (и правильно сделал) с отдельными экземплярами контейнеров, заставим собрать "как в учебнике" объекты в единый контейнер. То есть несмотря на наличие иерархии это ещё не ООП (!), т.к. нет поведенческого полиморфизма. ООП = состояние+поведение+идентичность+полиморфизм.
make base_circles and colored as single array with different objects
import matplotlib.pyplot as plt
import numpy as np
# Base class representing non-colored circles
class BaseCircle:
def __init__(self, x0, y0, diameter):
self.x0 = x0 # x-coordinate of center
self.y0 = y0 # y-coordinate of center
self.diameter = diameter # Diameter of the circle
@property
def radius(self):
return self.diameter / 2 # Compute radius from diameter
def draw(self, ax):
"""Draws the outline of the circle."""
circle_outline = plt.Circle(
(self.x0, self.y0),
self.radius,
color="black",
fill=False,
linewidth=2
)
ax.add_patch(circle_outline)
# Subclass extending BaseCircle with color capability
class ColoredCircle(BaseCircle):
def __init__(self, x0, y0, diameter, color):
super().__init__(x0, y0, diameter) # Initialize parent class attributes
self.color = color # Additional color attribute
def draw(self, ax):
"""Draws the filled circle with chosen color."""
circle_filled = plt.Circle(
(self.x0, self.y0),
self.radius,
color=self.color,
fill=True,
alpha=0.7, # Translucent appearance
linewidth=2
)
ax.add_patch(circle_filled)
# Screen settings
screen_width = 640
screen_height = 480
# Available colors for ColoredCircle instances
colors = ['red', 'green', 'blue', 'cyan']
# Single list holding all circle objects (both BaseCircle and ColoredCircle)
all_circles = []
# Dynamic generation of random circles
for _ in range(15): # Total 15 random circles
x0 = np.random.randint(screen_width//10, screen_width-screen_width//10)
y0 = np.random.randint(screen_height//10, screen_height-screen_height//10)
diameter = np.random.uniform(20, 100)
# Decide probabilistically whether it's a base circle or colored circle
if np.random.rand() > 0.5: # Probability-based choice
# Create a ColoredCircle instance
selected_color = np.random.choice(colors)
col_circle = ColoredCircle(x0, y0, diameter, selected_color)
all_circles.append(col_circle)
else:
# Create a BaseCircle instance
base_circle = BaseCircle(x0, y0, diameter)
all_circles.append(base_circle)
# Drawing routine
fig, ax = plt.subplots(figsize=(screen_width/100, screen_height/100))
# Unify iteration over both types of circles
for circle in all_circles:
circle.draw(ax) # Polymorphic call to draw(), handled appropriately per type
# Configuring plot aesthetics
ax.set_xlim(0, screen_width)
ax.set_ylim(0, screen_height)
ax.set_aspect('equal') # Equivalent scaling for perfect circles
plt.title("Mixed Display of Base and Colored Circles")
plt.show()
Теперь если посмотреть то фактически мы описываем не сами объекты, а то что они содержать и как взаимодействовать с окружением. То есть нам без разницы что это - список, класс, иерархия, полиморфизм или нет. Нам важно чтобы это влезло в контекстное окно. Теперь добавим ограничение в сами объекты. Пишем
make restricion of coordinates at each circle object constructor no more than 320x200 by x0 and y0 and saturate these values. Generate circles with random diameter from 1/10 to 1/3 of screen size
import matplotlib.pyplot as plt
import numpy as np
# Simple circle class with coordinate clamping
class BaseCircle:
def __init__(self, x0, y0, diameter):
# Validate and clamp coordinates
self.x0 = np.clip(x0, 0, 320) # Saturation enforced
self.y0 = np.clip(y0, 0, 200) # Saturation enforced
self.diameter = diameter # Assume valid diameter input
@property
def radius(self):
return self.diameter / 2 # Derived radius computation
def draw(self, ax):
"""Draws the outline of the circle."""
circle_outline = plt.Circle(
(self.x0, self.y0),
self.radius,
color="black",
fill=False,
linewidth=2
)
ax.add_patch(circle_outline)
# Extended class supporting color-filling
class ColoredCircle(BaseCircle):
def __init__(self, x0, y0, diameter, color):
super().__init__(x0, y0, diameter) # Parent initialization handles validation
self.color = color # Additional color attribute
def draw(self, ax):
"""Draws the filled circle with chosen color."""
circle_filled = plt.Circle(
(self.x0, self.y0),
self.radius,
color=self.color,
fill=True,
alpha=0.7, # Translucent shading
linewidth=2
)
ax.add_patch(circle_filled)
# Screen specifications
screen_width = 640
screen_height = 480
# Valid diameter range derived from screen size
min_diameter = screen_width / 10
max_diameter = screen_height / 3
# Palette of possible colors
colors = ['red', 'green', 'blue', 'cyan']
# Container for storing circle objects
all_circles = []
# Dynamically generate 15 circles with constrained parameters
for _ in range(15):
# Randomly choose coordinates within saturation limits
x0 = np.random.randint(0, screen_width) # 0 <= x0 <= screen_width
y0 = np.random.randint(0, screen_height) # 0 <= y0 <= screen_height
# Random diameter selection within permissible range
diameter = np.random.uniform(min_diameter, max_diameter)
# Choose between BaseCircle and ColoredCircle probabilistically
if np.random.rand() > 0.5:
# Create a ColoredCircle instance
sel_color = np.random.choice(colors)
col_circle = ColoredCircle(x0, y0, diameter, sel_color)
all_circles.append(col_circle)
else:
# Create a BaseCircle instance
base_circle = BaseCircle(x0, y0, diameter)
all_circles.append(base_circle)
# Setup for drawing
fig, ax = plt.subplots(figsize=(screen_width/100, screen_height/100))
# Draw all circles
for circle in all_circles:
circle.draw(ax) # Invokes respective draw method
# Fine-tune plot settings
ax.set_xlim(0, screen_width)
ax.set_ylim(0, screen_height)
ax.set_aspect('equal') # Equivalent scaling prevents distortion
plt.title("Circling Within Constraints: Mixed Types")
plt.show()
Вообщем теперь любой (!) язык собственно становится ассемблером для промптов, которые рано или поздно будут приведены к поведению некоего универсального языка запросов и формирования данных. А парадигма и всё остальное выбирается исходя из заданных ограничений и архитектурных особенностей. Включая оптимальную по разным критериям оптимизацию (память, быстродействие, отклик, пропускная канала связи итд).
Спасибо за пример, стало понятнее.
Что представляю я, когда говорят о языке более высокого уровня: я пишу промты, программа полностью создаётся из них.
Вижу что здесь не так: у нас есть артефакт в виде кода над которым итеративно работает программист. Получается генератор кода на стероидах. Если ничего не делать, то в конце концов у нас останется только код в репе. По аналогии, это как получать минифицированный js файл, вместо исходников.
Мой опыт генерации показывает, что если сразу всё описать, то шанс получить согласованное решение выше, чем в диалоге. Бывает, что переделывает только ту часть, на которую указал, а все остальные места (из этого же чата генерации) не приходят в согласованное состояние.
Да именно последовательное применение итераций есть суть кодогенерации с LLM. Не спецификация! Как это принято. А это как из куска глины гончар или скульптор начинает делать то что необходимо. Иными словами, это предсказуемость начальных условий и формирование граничных значений. Если описать всё и сразу - получим парадоксальное поведение (если не влазит в контекстное окно). Вообщем это из разряда энтропия суммы и суммарная энтропия. Диалог фактически устанавливает связи некой микро-виртуальной машины, которая вполне себе реальная в виде элементов памяти весов и пройденных путей активации нейрона по заданному уровню. В этом случае возможен выход из контекстного окна и "забытие" предыдущего результата, однако такая последовательность приводит к синтезу уже гораздо большего кода, причём он может самокорректироваться агентами по ходу генерации а также тестироваться, то есть фактически самособираться. Осталось только добавить в компиляторы вменяемые отклики, пригодные для ИИ (не на человеческом языке) а адаптированные для агентов в виде уже токенизированных идентификаторов.
И даже если через какой год всё это дело остановится, все эти вайб-кодинги никуда не денутся
Сейчас эти системы работают в убыток. Когда перестанут в них вливать деньги, то вайб-кодинги станут жутко дорогими
Вот интересно, что в электронике работало два экспоненциальных закона - закон о удвоении транзисторов, и закон о снижении потребления на один транзистор. Если бы не было второго закона, то мир бы шел по пути огромных компьютер и очень быстро уперся бы в ограничение и прогресс остановился.
В этом и проблема развития ИИ, там работает один закон и мы быстро увеличиваем мощности для обучения и генерации, тратя на это огромные ресурсы, а профит очень небольшой. Без второго компенсирующего закона до ограничения не далеко.
Выход из этого все таки возможен - это более эффективные модели, чем LLM или принципиально другая техническая база, квантовые компьютеры например.
То есть, не решив фундаментальные проблемы коннеционистких подходов, Вы считаете что Вам поможет квантовый компьютер их.. "обойти"?!
Там вопрос скорее будет сложности обучения - экспоненциальная для классических методов грубо говоря и полиномиальная где нейросеть обучает нейросеть, образно нейросеть обучается датасетам в виде +- оптимальных весов другой сети согласно входным величинам. То есть минуя что-либо она может "предсказать" начальные условия для другой нейросети которые потом доводятся уже классическими методами. Этакая энтропия, уменьшающая энтропию. Квантовые вычисления упираются в декогеренцию, вполне возможно там есть такой же физический предел как и для классических систем, связанный с охлаждением или ещё чем-либо.
По крайней мере, квантовый компьютер отбросит далеко назад проблему мощности вычислительных ресурсов, а там глядишь и до сингулярности не далеко. Останется проблема с данными еще, но может тоже что-то придумают.
Проблемы только будут накапливаться и одна из них галлюцинации, их станет больше, как и других проблем. Если накрыть кучку гуано листиком - это не означает что оно перестанет пахнуть. Проблемы надо решать, а не "прятать" в виде: "А вот квантовый компьютер снимет одну проблему...". Вот только их 15 у коннекционистов
Галлюцинации решаются через проверку фактов запросом ИИ в интернет или, если это что-то абстрактное, например, придумай стих, через критическую оценку тоже от ИИ. Ну в так ошибка всегда неизбежна при инфиренсе. Это справедливо для любого ИИ. Допустим у вас нейросеть заточена на распознавании кошек или собак, и делает это с точность 99%, но если на вход подать картинку слона, то вероятности могут оказаться 97% собака, 3% кошка, так как слонов не было в обучающей выборке. Вот с текстами и мышлением та же проблема - данных мало, выборки небольшие,а ИИ заточен выдавать какой-то ответ.
Вы, наверное, шутите?! Проверка фактов запросом ИИ в интернет? Вы предлагаете лечить галлюцинации галлюцинациями? Это выглядит так: какая-то ЛЛМ "придумала факт" (сгенерировала), никто этот "факт" не проверил, и он ушел в общую массу интернет-шума. А потом ваша вторая ЛЛМ лезет в этот интернет, видит ту самую ошибку и говорит: "Да вот же - официальное подтверждение!".
Давайте посмотрим на эти грабли: в 2023–2024 годах на этом уже погорели юристы в США и Канаде. В громком деле Mata v. Avianca адвокаты подали документы с выдуманными названиями прецедентов, которых никогда не существовало. Позже аналогичный случай произошел в Британской Колумбии в рамках семейного спора. Они совершили ту самую ошибку: они не просто доверились генерации, а попросили чат-бота подтвердить подлинность этих же выдумок, и ЛЛМ предсказуемо ответил: "Да, эти дела реальны". И таких примеров в судебной практике 2025 года становилось только больше и больше, несмотря на развитие технологий.
Тут даже Вангой быть не надо. На Хабре, в течение этого года мы гарантированно увидим новые публикации о том, как в очередных судебных процессах вскрылось использование ЛЛМ, и как ЛЛМ снова "выдумал" несуществующие нормы или детали сделок. И таких статей будет становиться всё больше, потому что интернет стремительно заполняется "самоподтверждающимся" бредом
Да, есть такая проблема, проверку фактов надо делать опираясь на данные до 2023 года. Как быть с новыми не ясно.
Недавно смотрел ролик, что для австралийского правительства за пару сотен тысяч долларов аудиторская компания Deloitte сделала отчет сгенерированный ИИ.. Вскрылось все совершенно случайно: какой-то душный журналист полез читать отчет в несколько сотен страниц и нашел ссылки на несуществующие факты и прочие признаки ИИ..
Честно говоря, стремно, насколько много такого может быть не только в статьях, но и использоваться в высших кругах..
Ну может быть, с этим борятся, пока альтернативные модели в зачатке, их на горизонте не видно.
Давайте скажем честно: 1. Вы ими никогда и не интересовались; 2. маркетологам LLM-компаний можно поставить плюс - они продали обществу идею, что автоматизированные системы - это ИИ. А вот только небольшой список того, где применяются когнитивнор-символьные системы:
Soar - активно используется в программах DARPA (например, ACE). Результаты испытаний по автономному управлению истребителями F-16 показали, что ИИ на базе логики и правил превосходит пилотов-людей в ближнем бою. Сейчас эти наработки ложатся в основу истребителей следующих поколений, где пилот не предусмотрен. Это позволяет самолету выполнять маневры с перегрузками, которые мгновенно убили бы пилота;
ACT-R - десятилетиями используется в NASA и авиации для моделирования действий операторов в критических ситуациях и управления сложными интерфейсами, где цена ошибки - потеря космического аппарата. А также, в образовательных технологиях (Intelligent Tutoring Systems) - эта архитектура десятилетиями используется для создания адаптивных обучающих систем. К 2026 году статистика неумолима: студенты, использующие "тьюторов" на базе ACT-R, показывают результаты значительно выше, чем те, кто пытается учиться с помощью ЛЛМ;
CRAM (Cognitive Robot Abstract Machine) - успешно применяется в высокотехнологичной робототехнике для выполнения сложных манипуляций в быту и на производстве. В отличие от нейросетевых роботов, CRAM понимает семантику действий (почему он это делает), а не просто копирует движения.
Я могу этот список продолжать и продолжать, настолько долго, что у меня быстрее возникнет ограничение по количеству символов в комментарии, чем этот список закончится. Альтернативные методы давно и надежно "захватили" реальный сектор экономики, обороны и науки. Просто об этом не пишут в рекламных буклетах - люди работают над развитием этих систем, а не "размахивают терминами".
Все правильно, для узкоспециализированной задачи можно за десятилетия создать классную экспертную систему. Но сможет ли это экспертная система для управления F-16 сочинить красивый стишок для детского утренника? Если нет, то грош ей цена. Такие системы сразу ломаются если немного меняются условия на которые они заточены.
Вы путаете экспертную систему с когнитивно-символьными системами (КСС). И ехидничаете совершенно не по делу. F-16 - это боевой самолет, и задача управления им требует огромного спектра когнитивных функций у системы и опытного пилота.
Суть в другом. Если условия меняются, узкая экспертная система ломается, но ЛЛМ в этом плане ничем не лучше - она начинает галлюцинировать при малейшем отклонении от обучающей выборки (вспомним Ваших слона и кошку).
КСС же адаптируется через логический вывод и перестроение модели мира. Она не ломается, она мгновенно пересчитывает, не генерирует ошибки (минимальная точность не менее 95%. В медицине и юриспруденции точность должна быть не менее 97%). Все символьные системы, исторически строились как ИИ и они намного ближе к настоящему ИИ, чем любая ЛЛМ.
Скиньте ссылку что за КСС, и где реально используется.
Где реально используются я Вам уже написал выше. А ссылки, так они давно всем известны, но мне не лень продублировать:
Soar (The Soar Cognitive Architecture) Сайт: https://soar.eecs.umich.edu/
ACT-R (Adaptive Control of Thought-Rational) Сайт: https://act-r.psy.cmu.edu/
CRAM (Cognitive Robot Abstract Machine) Сайт: https://www.cram-system.org/
OpenCog Hyperon - Сайт: https://opencog.org/
Если вам нужна система для сочинения "стишков", то систему управления самолётом вы и за грош не купите.
Вопос только, а сколько у вас есть денег на оплату разработки и эксплуатации системы, которая сумеет сочинять устраивающие вас стишки.
Тут главный вопрос, что мне надо одновременно и стихи сочинять, и подбирать умный фитнес трекер, и составлять план что посмотреть на выходных другом городе и т.д. Сейчас Алиса это все делает для меня бесплатно, ну может когда-то монетизируют и буду платить. Руками такое сложно запрограммировать.
Экспертные системы никуда не денутся, но где там разум, как писали ниже?
Экспертных систем (ЭС) почти не осталось. Медицинская DXplain дожила до сегодняшних дней и еще пара других, в разных отраслях. Экспертные системы применяются в играх, чтобы "оживить" торговлю. Им на замену пришли КСС - мощные, быстрые, умные, без "болячек" ЭС и у них, не у всех пока, но уже есть реализованная (бывшая фундаментальная проблема ИИ - "желания и мотивация") и исследователи уже работают над другой фундаментальной проблемой ИИ - "здравый смысл" (Common Sense). Почему ничего из вышеперечисленного никогда не будет в коннкционистких архитектурах - ограничения самих архитектур и нерешенные фундаментальные проблемы
P.S.: Скажите пожалуйста, а Ваша Алиса умеет не галлюцинировать? Яркий пример галлюцинаций - "Две Алисы ругаются" (Youtube)
Галлюцинации - это развновиднность ошибки, они архитектурно неустранимы из LLM. Но и другие системы тоже ошибаются или не дают ответа, сравнивать надо точность разных моделей. Что там у ваших систем с бенчмарками? Тест Тьюринга проходят? Международные олимпиады по математике решают?
Ошибаются (галлюцинируют) ТОЛЬКО коннекционистские архитектуры по самой своей природе. Символьные системы детерминированы. Ошибка в них возможна лишь в двух случаях: если оператор пропустил "грязные" данные в ядро или не проверил логическую ветку при обучении, но это сразу вычисляется, задолго до релиза и обычные пользователи ее даже не увидят. Но это уже уходит в прошлое благодаря продвинутым механизмам самообучения и формальной верификации, что в разы снижает стоимость обучения символьных систем.
Что там у ваших систем с бенчмарками?
Можно, конечно, мериться цифрами, но зачем? Это напоминает мужчин, которые меряются... носами. Их разбуди ночью - они назовут длину и ширину своего носа, вплоть до миллиметра. А другие не меряются - они в этот момент делают новых Буратин и Мальвин, им некогда заниматься ерундой.
Тест Тьюринга проходят?
На 2026 год официально тест Тьюринга не прошла ни одна система, включая ваши ЛЛМ. Зато ToM-тесты (Theory of Mind - понимание состояний, намерений и логики других субъектов) КСС проходят на уровне, недоступном для статистических моделей
Международные олимпиады по математике решают?
Вы до сих пор не понимаете разницу между "создать ИИ" и "навесить ярлык ИИ". Приоткрою вам завесу тайны: у Soar, ACT-R и других систем есть математические модули. Они щелкают любые задачи как орехи, но решать задачи модулем - это... скууушна.
Настоящий ИИ должен научиться "думать как математик". Мы приглашаем специалиста, разбираем конкретную задачу на "атомы" и вводим в ядро новые когнитивные компоненты. После этого математический модуль "выбрасывается на свалку" за ненадобностью и система сама обретает способность - математически рассуждать.
Ну то есть околунулевае результаты. С какой точность отличают кошку от собаки?
Главное преимущество коннекторов - отсутствие индексации а переход осуществляется сигнальным способом (умножение). Поправьте если это не так, символьные структуры требуют крайне скверно реализуемые операции сравнения и условного перехода в рамках многопоточных архитектур и требуют индексацию. Если использовать метод переключающих функций то это так или иначе превращается в коннектор. По сути для коннектора имеем лишь ячейки памяти и некий сигнальный процессор пробегающий по весам с умножением с накоплением - это очень быстро. Из плохих операций - это умножение а особенно деление, но оно не часто выполняется даже для матричных операций (нахождение дискриминантов и обратных). Плюс коннектор с ReLU - это по-сути диодно-транзисторная логика на новом витке развития.
Понятно: надежда на бесплатность и на то, что разработчик сам найдёт способ окупать развитие и эксплуатацию Системы :-)
И на то, что "ещё немного", и Система ("ИИ" или что-то ещё) начнёт делать правильно и многое, а не только складывать стишки из известных фраз и рифм.
Я помню, в девяностые мой товарищ купил себе программу преобразования голоса в текст ("Горыныч", вроде бы...). Он надеялся, что ещё немного, и ему не придётся самому наколачивать на клавиатуре свои умные мысли.
Но вот прошло тридцать лет, но даже сегодня "Яндекс клавиатура", которая распознаёт мой голос и пишет за меня текст, показывает, что она слабо понимает то, о чём я говорю. И соответственно, часто ошибается. Меня устраивает её работа только потому, что она условно бесплатна для меня.
Я бы хотел продолжения этого списка и некоторый ретроспективный обзор развития концепций, стоящих за этими разработками
В сознании оьывателя почему-то спутанны понятия интеллект и разум, хотя между ними пропасть. Ии изобрели в 2005 году и засунули в игру fear. Разум не изобретут очень долго, хотябы потому что плохо понимают что это такое (смотри трудная проблема сознания)
Так может он не нужен, вдруг еще нас поработит? Сейчас LLM практически по всем вопросам и навыкам превосходит человека с пятилетним стажем работы, это уже немало. Постепенно этот уровень будет расти, ну и в статье пишут, что цена этого роста экспонента, поэтому до уровня бог не дойдет в текущей парадигме. Ну и к тому же не обязательно чтобы разум человека и машины описывался одними и теми же категориями, т. к. все равно остается риск, что неразумные LLM оставят без работы миллиард людей.
Когда изобрели ИИ? В 2005 году? Сэр, термину ИИ в этом году исполняется 70 лет как и первой ИИ программе - Logic Theorist (логико-символьная архитектура, 1956, А. Ньюэлл, Г. Саймон, К. Шоу)
Вообще говоря ещё раньше - 1820й год, разностная машина Беббиджа (ну или логическая машина Джевонса, Буль примерно в это же время одноимённой алгеброй занимался). Впервые там использована память для хранения предыдущего состояния и последующего - а это основополагающий принцип мышления - осуществление сравнения (вычитания).
А мне то казалось что недо-ИИ (в виде Эвриско) изобрел Дуглас Леннат в 1976-1982 специально чтобы про нее написали в последней книжке известного еще советского трехтомникика издательства МИР (которая "Компьютер обретает разум"). Леннат правда не угомонился тем что про него написали в этой книжке и начал делать проект Cyc как развитие Eurisko :)
Десятилетиями бурный рост кремниевых чипов опирался на еще одну знаменитую идею масштабирования — закон Мура.
Ну очевидная же чушь, которую только LLM может выдать, наверное. Правильно так: несколько десятилетий развитие кремниевых чипов хорошо аппроксимировалось законом Мура.
да и закон Мура про удвоение транзисторов на кристалле несколько размылось представлениями о том какой должен быть кристалл, что такое процессор (одно- и многоядерный) плюсом туда же память, которая является его частью а также внешняя так как DRAM идёт по другой технологии. Поэтому в большей мере там предела совершенству нет. А вот тактовая частота упёрлась в потолок ещё лет 20 назад и ходит вокруг да около 2 ГГц, да и вычисления с более высокой частотой уже не когерентные. 3 ГГц это 2.5 см четверти длины волны, а делённое на корень из диэлектрической проницаемости так вообще 1. Пока с левой стороны процессора что-то посчиталось, справа ещё не знают об этом.
В который раз прошу администрацию Хабра прикручивать аудио к статьям.
По статье че. Ну все иишка уперлась , одбераль и доперлась.Эхкспотенциальный рост невозможен запрещен и вообще не к месту, чипы греться начали итд итп Все читаем только человеческих аффторов и книжки 16 века.
Хорошее напоминание, что кривые масштабирования — это не законы природы, а аккуратная экстраполяция прошлого опыта. Пока данные и деньги есть, график выглядит красиво, но ограничения упираются не только в физику, а в экономику, энергетику и качество задач. Похоже, следующий реальный скачок будет не от «еще больше параметров», а от архитектурных и алгоритмических изменений, иначе рост просто станет слишком дорогим.
Информация
- Сайт
- slc.tl
- Дата регистрации
- Дата основания
- Численность
- 1 001–5 000 человек
- Местоположение
- Россия
- Представитель
- Александр Шилов
Миф о бесконечном масштабировании или когда ИИшка упрется в потолок