Премии, связанные с Transformer и глубоким обучением
1. Премия Тьюринга (Turing Award) — «Нобелевка» в Computer Science
- За что дают?
За выдающийся вклад в области информатики.
- Кто получил за Transformer и deep learning?
В 2023 году премию получили:
Йошуа Бенджио (Yoshua Bengio)
Джеффри Хинтон (Geoffrey Hinton)
Ян Лекун (Yann LeCun)
(Но не авторы Transformer! Они получили её за более ранние работы по нейросетям.)
Однако авторы Transformer (Васуани, Шейзер и др.) тоже могут её получить в будущем — их работа считается революционной.
2. ACL Test of Time Award (премия за долгосрочное влияние)
- За что дают?
Награждают статьи, которые сильно повлияли на NLP через 10+ лет после публикации.
- Кто получил?
Пока "Attention Is All You Need" (2017) ещё не получила (ей всего 7 лет), но, скорее всего, получит в 2027–2030 годах.
3. NeurIPS Best Paper (премия за лучшую статью на конференции NeurIPS)
- За что дают?
За самые значимые исследования в machine learning.
- Получал ли Transformer?
Нет, статья вышла в arXiv (2017), а не на NeurIPS. Но если бы подавали — точно бы выиграла.
---
Почему авторы Transformer ещё не получили Тьюринга?
Премию Тьюринга дают с задержкой (обычно через 10–20 лет после открытия).
В 2023 наградили "отцов deep learning" (Хинтона и др.) — их работы 1980–2000-х сделали возможным появление Transformer.
Transformer ещё "слишком молод" (2017), но его авторы — главные кандидаты на премию в 2030-х.
---
Какие ещё награды получили авторы Transformer?
- Google Research Awards (внутренние премии).
- Упоминания в топ-конференциях (ICML, ACL, NeurIPS) как одна из самых влиятельных работ.
- Цитирования (более 80 000+ ссылок на статью — это гигантский показатель).
---
Вывод
- Пока авторы Transformer не получили Тьюринга, но их работа изменила всю NLP-индустрию.
- Скорее всего, их наградят в будущем — как Бенджио, Хинтона и ЛеКуна.
- Сейчас они получают признание через цитирования и внедрение их идей в ChatGPT, Gemini и другие ИИ.
Transformer — это как изобретение транзистора для ИИ: пока не всегда награждают, но без него ничего не работает.
Вот детальный анализ недочетов текущего подхода, направления для улучшений и инновационные способы интеграции ИИ:
---
1. Что не учли в текущей реализации
1.1 Динамическое изменение структур
- Проблема: Игры с procedural generation (например, Starfield) могут менять расположение полей во время выполнения.
- Решение: Добавить мониторинг паттернов доступа:
function TrackStructureChanges(baseAddr)
while true do
local newLayout = AnalyzeStructure(baseAddr)
CompareLayouts(lastLayout, newLayout) -- Алерт при изменениях
sleep(1000)
end
end
1.2 Мультиплатформенная поддержка
- Упущение: Нет оптимизации под ARM (Android/iOS) и консоли (PS5/Xbox).
- Исправление: Добавить детектор ABI:
function GetPlatformType()
if readMemory(0x10000, 4) == 0x7F454C46 then
return "ELF" -- Android/Linux
elseif readString(0, 4) == "XBOX" then
return "XBOX"
end
end
1.3 Обработка сетевых структур
- Пробел: Не анализируются пакеты сетевого протокола, хотя они часто дублируют игровые структуры.
- Доработка: Интеграция сниффера пакетов:
function HookNetworkPackets()
-- Фильтрация пакетов, содержащих координаты игроков
PacketSniffer.filter("PlayerPosition", "xx xx ?? ?? xx FF")
end
---
2. Ключевые направления для улучшений
2.1 Гибридный статико-динамический анализ
- Идея: Комбинировать результаты CE с Ghidra:
graph LR
CE[Динамический анализ в CE] -->|Экспорт| Ghidra
Ghidra[Статический анализ] -->|Импорт паттернов| CE
2.2 Система предсказания смещений
- Метод: Использовать статистику обращений для предсказания важных полей:
function PredictImportantOffsets()
local stats = CollectAccessStats()
return {
health = stats.mostAccessed[1].offset,
ammo = stats.mostWritten[3].offset
}
end
2.3 Визуализация в 3D
- Инновация: Отображение структур как графа в 3D-пространстве (используя Cheat Engine's OpenGL):
function Draw3DStructureGraph()
for addr, links in pairs(graph) do
RenderNode(addr, links, GetStructureColor(addr))
end
end
---
3. Интеграция ИИ: конкретные применения
3.1 Классификация типов данных через ML
- Подход: Нейросеть анализирует паттерны памяти:
# Образец модели PyTorch
class TypeClassifier(nn.Module):
def forward(self, x):
# x: [значения памяти, контекст инструкций]
return torch.softmax(self.layers(x), dim=1) # Вероятности типов
- Использование в Lua:
function AIDetectType(address)
local tensor = MemoryToTensor(address, 64)
local result = ExecutePyScript("model.predict", tensor)
return {"float", "int", "pointer"}[result]
end
3.2 Генерация эксплойтов через ИИ
- Пример: Автоматический поиск уязвимостей:
function FindVulnerabilities()
local patterns = AI_GenerateCrashPatterns()
for _, pattern in ipairs(patterns) do
if TryCorruptMemory(pattern) then
LogExploit(pattern)
end
end
end
3.3 NLP для анализа игрового кода
- Применение: Автоматическое комментирование структур:
function GenerateComments()
local code = Disassemble(0x123456, 50)
local comment = AI_AnalyzeCode(code)
SetComment(0x123456, comment) -- Например: "Рендеринг частиц, цикл из 12 итераций"
end
---
4. Практические примеры улучшений
4.1 Для читеров
- Авто-определение уязвимостей:
-- ИИ ищет паттерны для телепортации
local teleportCheat = AI_FindMemoryPattern({
"float x,y,z",
"write frequency > 1Hz",
"range -1000..1000"
})
4.2 Для моддеров
- Генерация SDK для модов:
GenerateModSDK({
structures = analyzed_graph,
hooks = FindCodeHooks(),
api = AI_GenerateAPI()
})
4.3 Для разработчиков
- Детектор багов:
-- ИИ находит некорректные указатели
local bugReports = AI_ScanFor(
"dangling pointers",
memory_ranges,
expected_patterns
)
---
5. Что еще можно улучшить?
5.1 Оптимизация
Проблема
Решение
Медленный поиск
Кэширование + параллельные потоки
Ложные срабатывания
Ансамбли ИИ-моделей
5.2 Безопасность
function AntiAntiCheat()
-- Маскировка брейкпоинтов под легитимные вызовы
HideDebugger({
stealth_mode = "SYSTEM_CALL",
fake_patterns = GetNormalTrafficSamples()
})
end
5.3 Пользовательский опыт
\-- Голосовое управление читами
RegisterVoiceCommand("дай бессмертие", function()
SetGodMode(true)
end)
---
Итог: дорожная карта улучшений
Срочные доработки (1-2 недели):
Динамический трекинг структур
ARM/консольная поддержка
Среднесрочные (1-3 месяца):
Интеграция ИИ для классификации
3D-визуализация
Долгосрочные (6+ месяцев):
Полный AI-ассистент для реверса
Генерация читов через NLP
Пример коммита для начала работ:
\+ function AI_Integration() {
\+ // Добавляем вызов Python ML-модели
\+ local result = ExecutePython("predict_type.py", memoryDump)
\+ }
Готов реализовать любое из этих улучшений в вашем форке. Какое направление наиболее приоритетно?
Основная:
CeWiki
Исчерпывающая:
Lua.txt (обновление 2023)
Форум:
cheatengine.org
Сайт:
cheatengine.org
Использовать CE можно разными способами. Самый простой - ничего не програмировать, а искать адреса в памяти процесса игры по правилам поиска, замораживать их значения. Посложнее - искать и использовать указатели на адреса памяти, чтобы после перезапуска уровня или игрового процесса таблица с адресами правильно работала. Посложнее будет правка дизассемблированного кода с помощью скриптов cheat engine, что даст гораздо больше управления над значениями адресов памяти, например, записать здоровье дружественным юнитам и даже создание предметов на карте или в инвентаре.
Работа с cheat engine это один из самых интересных способов познакомиться с программированием на асемблере через асемблерные вставки и через прогон отладочного кода в пошаговой отладке (или без прогона через брейкпонты). Также можно ознакомиться с програмированием на lua, программированием dll-ок на c++. На C++, reclass и IDA можно построить классы и управлять игровым поцесссом более гибко и масштабно. Также есть инструменты под определенные игровые движки, которые облегчают реализацию читов, например, поиск функций (отладочных, декомпилированных) для читов и их создания. Скорее всего, если поискать, то можно много новых инструментов найти в Интернете.
Также ознакомиться с программированием можно на уровнях игровых движков (unity, unreal engine, cry engine и других) через поиск в Интернете. Так можно получить представление о древовидной связи игровых обьектов сущностей и связи этих обьектов с обьектами классов-поведений. Часть классов-поведений(компоненты) являются частью игрового движка, а часть является особенностью определеной игры. Например, создание, удаление, копирование обьекта-сущности с его компонентами - это прерогатива функций игрового движка, на котором делают множество игр. А, например, управление игровой механикой это уже связь с конкретной игрой или даже конкретной версии игры. Когда, работаешь с игровым движком, то прекрасно понимаешь почему динамические указатели имеют место быть. И это и сцена, которая хранит дерево обьектов, это само дерево обьектов и это место в динамическом списке компонентов и сам компонент, который может работать с переменной локальной или же обращаться к обьектам других компонентов или классов не на основе компонентов.
Короче говоря, если планируешь изучать прогоаммирование, то ничего нет интересней начать с программирования читов и изучения архитектуры операционной системы (начиная с процессов, потоков, памяти и т.п.). Также изучая готовые примеры скриптов, кодов, исходников игр и трейнеров. Написание трейнеров и обхода защит от трейнеров, тоже очень поможет в изучении программирования.
После использования Obsidian более месяца понял, что пока не нашел лучше программы для ведения базы знаний.
При чем чем больше пользуешься тем вероятнее изменить стратегию ведения базы. Например, я отказался от множества vault в пользу трех: для работы на рабочем ПК, на смартфоне и на ноутбуке. Пока они все составляются не зная друг про друга. Большое их кол-во неудобная штука, т.к. переключаться между ними долго, искать в каждом отдельном так себе... Граф поможет искать все связи и ссылки. Возможно, что-то еще напишу по Obsidian. Думаю, что я изучил по Obsidian все, что мне нужно и по его основным плагинам, кроме написания сами плагинов (пока не потребовалось)
Привет. Эта тема опрос по Obsidian и альтернатив этой программы. Obsidian работает на множестве операционных систем для ведения огромного количества заметок, конспектов и прочего. Если не пробовали, то предлагаю попробовать, особенно, если заметок много и они разбросаны по разными местам. Также можно обсудить еще плагины и способы ведения заметок.
Предлагаю поделиться своими ТОП горячими клавишами в Visual Studio.
ctrl + ] найти закрывающие скобки функции, класса. С shift можно выбрать внутри.
shift + alt + (. или <) перемещение по выделенными словам как f3 вперед или назад
alt + лев. кнопка мышки установка мульти курсора. После выбор по shift или в пункт 2, 4.
shift +u или ctl +u сделать выделенный текст строчными или прописными
ctrl + R + G - удалить неиспользуемые пространства имен
ctrl + shift + v кольцевой буфер обмена
ctrl + K + S обернуть строки (в регион, namespace, if и т.п.)
ctrl + alt + X окно элементов (перетаскиваем туда выделенные строки в своим папки. Это для хранения истории своих строк кода)
ctrl + K поставить закладку
ctrl +K+K создать/убрать закладку
ctrl +K+N / CTRL+K+P перемещение по закладкам
ctrl +K+L удалить все закладки
ctrl + T показать список задач.
Перемещение строки или выделенных строк
alt +↑ переместить строку вверх
alt +↓ переместить строку вниз
alt + shift +arrow keys(←,↑,↓,→) выбор колонок текста
ctrl +arrow keys(←,→) перемещение по словами
ctrl +arrow keys(↑,↓) движение списка
и т.п.
Права на загрузку файлов выставил всем на группу подтвержденных пользователей. Это делается один раз администратором
У @LIRW, вроде, нет подтверждения. У кого нет подтверждения сколько-то дней, те не смогут писать. При возникновении проблем с регистрацией нужно написать мне. Если нельзя со старой учетки, то - с новой
Категории
-
-
-
-
-
-
Программирование
Программирование и отладка
Метки:
В сети:
Скрипт сегодня №6
function onOpenProcess(processid)
reinitializeSymbolhandler()
local md5Process = GetMd5Process(processid)
PrintMd5Process(process, md5Process)
local isSupportedVersion = CheckingMd5CurrentProcess(md5Process)
local lineResult = isSupportedVersion and 'Is supported version.' or 'Is not supported version.'
if not isSupportedVersion then
speakEnglish(lineResult, false)
messageDialog('Error', lineResult, mtError, mbClose)
end
end