All streams
Search
Write a publication
Pull to refresh
13
0
Алексей @Arech

Neural Networks & C++

Send message
Спасибо. Под каждым словом подписываюсь.
А вообще, всё выглядит довольно логично. Механизм dot-product attention, представленный год спустя в Трансформерах, тоже, по видимому, основывается на свойстве эмбеддингов, что смыслы спрятаны в пространстве эмбеддингов как-то очень близко-локально. Что и позволяет их находить «вблизи» запроса (в терминах «Attention is all you need»).
Очень интересно, спасибо!

Про Теорему 1 (я, кстати, ужасно рад, что оказывается на хабре таки включили MathJax, но ЯННП как его включить в коментах, — попробую по-старинке, но, боюсь, не зайдёт).

Формула $ \upsilon_w \approx A \mathbb{E}[\frac{1}{n}\sum_{w_i\in s}\upsilon_{w_i}|w \in s] $, если я правильно понял, выражает эмбеддинг слова w приблизительно как линейное отображение мат.ожидания (по всем окнам) среднего значения эмбеддингов всех слов в окне, содержащем это слово. Правильно ли я понимаю, что подразумевается, что в вычислении среднего искомый эмбеддинг \upsilon_w не включается? Т.е. среднее всех эмбеддингов, кроме искомого?
Сначала я не понимаю, а зачем вообще вашему «неподготовленному читателю» «вот это вот всё»? Чтобы что? Что он со всей этой информацией должен будет делать?
Ну и потом уже более мелкие вопросы, типа что значит «неподготовленный», кто это? Вот второкурсник мехмата, который ничего не знает про ML, но понимает линейную алгебру, — это неподготовленный? Или неподготовленный это обычный девятиклассник из обычной школы?..

Я согласен с вами, что я не предоставил аргументацию, хотя раз уж высказался, то стоило бы. Проблема в том, что пришлось бы слишком много всего говорить и слишком многое исправлять, чтобы привести всё это в какое-то согласие с парадигмой, используемой сообществом. У меня просто нет столько ни свободного времени, ни желания менторствовать… Ну, если утешит, можно просто отмахнуться от моих слов утверждением про козни завистников-злопыхателей.
Нисколько не пытаясь защитить исходную статью (которая по моему скромному мнению не просто пустая, но вредно пустая, т.к. искажает многие понятия), всё же не могу не заметить, что на практике мне ещё ни разу не удалось заметить в ML сообществе хоть кого-то заметного, кого бы парило использование термина «перцептрон» применительно к описанию любых неглубоких полносвязных НС. Точнее, более того, по меньшей мере некоторые (напр, из свежего H.Zhao et al arXiv:2004.13621) с удольствием используют именно этот термин, почему-то совершенно не волнуясь замшелыми вопросами, типа какая там в оригинале у Розенблатта была активация и т.д. и т.п, поскольку понимают, что отрасль давно уже ушла далеко вперёд и за неимением лучшего, можно использовать этот термин.
кажется уже было…
Это всё понятно, но согласитесь, называть жигули мерседесом по причине того, что это лучшее, на что мы способны, как-то… немножко странно.
спасибо за ссылки, посмотрю.

Насчёт ААА — это было про другое, про сравнимость визуального ряда в рамках одной классификационной категории. Оно просто не сравнимо между 5-10 лет назад, и новым. Поэтому либо Unreal5 это ААА, но тогда Годотовское — никак не ААА, либо Годотовское ААА, но тогда сколько А в Unreal5? Это разные лиги.

А, это просто. Берёте любой готовый из ассетов godotengine.org/asset-library/asset?category=&support%5Bofficial%5D=1&godot_version=&sort=updated&filter=platformer (наверное, лучше на KinematicBody, там попроще и сам пример полнее) и модифицируете его как хотите. Скорее всего это будет вполне работоспособным.
> Все что есть коммерчески-успешное на Godot это 2Д и 2.5Д игры.

А из этого что знаете? (я без подколок спрашиваю, просто когда сам разбирался с этим, — не смог ничего толком найти, хотя из каждого утюга кричали, как же хорош Годот с 2D, — поэтому по прежнему интересно посмотреть)

> Я имел в виду — считаю что «технически» Godot 3.2 готов для AAA-уровня графики, уровня 2010-2015 года.

Возможно… Думаю, Вам здесь точно виднее, чем мне. Единственный момент, что таки сегодня уже половина 2020 почти закончилась, поэтому чего говорить про ААА в лучшем случае пяти-, если не десяти- летней давности?.. Недавно новый Unreal5 выкатили, демка совершенно взрывает качеством и сложностью картинки.
> Меня лично Годот полностью устраивает и я считаю Годот лучшим открытым движком.

Это скорее про то, как мало иному человеку надо для счастья и не про достоинства Годота, а про недостатки альтернатив ;)

> Исходный код Годот очень прост и компактный, и даже текущей версии 3.2 хватит для создания ААА-игры (игры уровня UE4) с небольшим модификация кода Годот.

Может быть, вы даже можете привести примеры успешно реализованных популярных (буду жалостлив, не ААА, и даже не АА и даже не А) В-игр на годоте, чтобы не быть голословными?
Начну с конца — к огромному сожалению и стыду, то, что Вы описали, — в моём опыте это не то, что не уникальная ситуация в русскоязычном пространстве, а совершенно типовая и общая… Не буду касаться причин этого, — в т.ч. и потому, что не хочу нахватать минусов от местных тихонь, узнающих себя в гадких портретах. Просто предложу — чувствуете в себе желание и силы, — бережно создавайте своё сообщество, адаптируя лучшие мировые практики (тот же Code of Conduct) и примерно следуя им лично. Либо просто идите в англоязычный сегмент… Там обычно всё гораздо взрослее и разумнее (не без исключений, но они редки).

Что касается конкретно годота… А Вы хотите разобраться в годоте чтобы что?

Просто если у Вас есть проект, которые Вы думаете сделать с помощью годота, — тут понятно, но почему тогда не формулировать задачу как «решить проект на годоте»? Если же просто, чтобы знать потенциально полезный инструмент… Я вижу несколько проблем с этим, вот смотрите:

1. важные факты: (а) Годот нестабилен даже с точки зрения обещаний (это проблема — разработчики не знают, что хотят получить в итоге). (б) От версии к версии ломается обратная совместимость (это нормально для продукта на раннем этапе развития). Для Вас как далёкого от программирования пользователя всё это означает, что Ваши знания текущей версии могут оказаться бесполезными в последующих версиях. Конечно, вряд ли они что-то изменят фундаментально, но… повозиться с разбирательством с отличиями точно придётся, и не факт, что это в конечном итоге окажется проще, чем начать с чистого листа.

2. ещё очень важный факт: не смотря на все победные реляции разработчиков, на годоте действительно не существует известных-популярных игр/приложений. Это не случайно, тому есть железобетонные причины, но для Вас, как дизайнера, это означает, что врядли найдётся крупный хороший денежный заказчик, который захочет базировать свой проект на Годоте (по крайней мере до тех пор, пока эти железобетонные причины не будут устранены [т.е. с нынешними приоритетами, боюсь, никогда]). Мелкие заказчики может и будут, но в целом имхо «здесь денег нет».

3. вот я в основном программер, С++ мой родной любимый дом; да ещё остались пусть заржавевшие, но всётки когда-то сильные навыки reverse engeneering бинарного кода (это когда даже исходников нет), но даже у меня проблемы с разбором многих вещей совершенно неиллюзорные в силу большой кодовой базы и полного отстутствия всякого высокоуровневого описания компонентов и их взаимосвязей. В конечном счёте я-то могу разобраться там наверное в любой проблеме, но это время. Но как это делать человеку не то, что без моих навыков, а «далёкому от программирования» я вообще не представляю. Потому что, как тут коллега уже выше верно заметил — шаг в сторону от демок, и вы увязли в болоте.

Поэтому лично мне кажется, что если только не стоит задача «прямо сейчас зарешать проект», от Годота лучше держаться подальше, чтобы банально не потерять время на то, что скорее всего никогда не понадобится. Кроме прочего, подход Годота к геймдеву достаточно уникален на сегодняшний день, и хорошо разобравшись с ним это не особо поможет потом перескочить на более зрелые-адекватные движки, вроде Unity/Unreal/etc. У этих движков свои проблемы, конечно, но по крайней мере их реально используют коммерчески, т.е. там деньги есть.
Это когда он один можно такое подумать. А там по меньшей мере еще 2-3 из костяка проекта только активно отметилось, а кто ещё видел, но не отреагировал? И никто ничего странного не увидел. Все трое-четверо активных глупые инфантилы? Ну, всякое бывает, конечно, но в конечном счёте какая разница? Результат одинаковый и никакого хорошего прогноза на развитие. К новым багам будут плюсоваться старые (потому что система тестирования отсутствует как класс) и из жизни новичков будут по прежнему воровать время (потому что осознанно не документируют некоторые важные аспекты).

Очень увы, потому что идея хорошая и ценная.
Угу, всё так и даже хуже. Повзаимодействовав с разработчиками, посмотрев _как_ они ведут дела, я очень опечалилился… Я даже не говорю про явные детские ошибки в С++ коде, которые крайне странны для проекта такого масштаба (вроде непонимания типа результата от умножения `float` на `double`в корневой реализации базового математического класса, или полнейший disrespect упаковки мемберов класса/структуры, исправление которого уменьшит потребление памяти на объекты до 10-15% в виденных мной случаях просто бесплатно for free) — ладно, это фигня в том смысле, что при желании опыт и знания дело наживное. Не говорю про нестабильность их `stable` релизов, — у меня лично он регулярно падает, но ± понятно когда и как этого избежать.

Но отсутствие централизованного репозитория тестов, которым каждый фрагмент проекта должен отвечать, (если говорить больше — у меня есть сомнения, что тесты большинства частей вообще существуют) — это очень большая и серьёзная проблема. И явное нежелание разрабов документировать как строго формальное описание узлов и поведений, так и любые «некрасивые» особенности кода и проекта, которые есть в данный момент, — это, на мой взгляд, вообще криминал.

Вот поясню примером.
Недавно столкнулся с тем, что у RigidBody2D забагована реализация свойства sleeping, суть которого — выключать обработку физики, когда тело покоится или просто не используется. Очевидно, это важный рычаг для экономии ресурсов и экономия ресурсов — единственное, ради чего он нужен. Оказалось (это стоило мне потери почти двух полных дней), однако, что «спящее» тело будет просыпаться не только в случаях, описанных в доках (коллизия или приложена сила/импульс), но ещё (бажно и логически необоснованно) когда меняется трансформ (скорее всего любого) родительского элемента (а тут мы помним, что ноды в годоте ещё используются просто для группировки и сохранения взаимного расположения группы дочерних нод, поэтому перемещение родителя перенесёт все его дочерние ноды, но и неожиданно и неправильно — разбудит их), либо когда происходит фиктивная коллизия с телом, полностью запрещённая collision mask (на внешней физике это не отражается, просто тело пробуждается).

Когда я всё это описал в багтрекере, ведущий разраб у меня спросил: «не, ну я всё равно не понимаю, в чём проблема то у тебя, кроме производительности?». Чувак, у тебя рычаг для управления производительностью сломан, а ты спрашиваешь у меня, какая у меня проблема кроме производительности?

Кончилось это всё тем, что они запулили апдейт к докам, где просто другими словами переформулировали ранее написанные фразы про «тело проснётся, если будет коллизия или к нему приложат силу/испульс» таким образом, чтобы на вопрос: «а с фига ли оно у меня проснулось без выполнения этих условий», было бы легко ответить: «ну там же не написано, что это ВСЕ условия, при которых тело проснётся!». Никакой информации про дополнительные условия, два из которых украли у меня почти два дня жизни, они не задокументировали, но обозвали пулл «прояснением логики работы свойства sleeping» и довольные собой и друг другом закрыли оба моих релевантных баг репорта. А, да, и ещё мне выписали предупреждение за нарушение их Code of Conduct за фразу «I'm struggling to not interpret your comment as a joke.»



Извините, бомбит. Короче, я раньше думал, что поконтрибьючу туда, дело то хорошее наобещали. Надо ли говорить, что хрен я чего теперь для них сделаю?.. Сложилось впечатление, что они там просто пилят гранты и оптимизируют свои KPI, чтобы всё некрасивое было бы запрятано подальше и со стороны не заметно. Без меня.
> некоторые из заявленных возможностей в Godot 3 просто не реализованы и перенесены в Godot 4

Похоже, это действительно фирменная фишка разработчиков этого движка. И дайте угадаю — узнаешь ты об этом только когда попытаешься реализовать свою задачу, а оно не будет работать, потому что в доках об этом — ни слова…
да хватит, хватит уже, первого комента достаточно.
Я уже так привык, что race condition всегда называют своим термином, что и думать забыл о нём, как об UB.
> качать видосики на скорости до 2 Мбит/с — удовольствие значительно ниже среднего (а именно такая скорость у очень многих), а у значительной части населения интернет доступен вообще только через 2G (даже EDGE не у всех есть).

Федерально мыслите! Именно поэтому зачем развивать беспроводную связь и всякие 5G, с которыми одни хлопоты? Нужно больше зомбоящиков!
Что-то не улавливаю. Поясните, плс?
> Оператор typeof

Что-то я не улавливаю, зачем плодить сущности, когда в «близком» С++ уже есть стандартизованный decltype? Зачем разводить языки ещё больше только ради того, чтобы развести?
> Меня зовут Костя, я немножко дизайном занимаюсь и расскажу вам кое-что о дизайне.

Отличный дизайн вступления для пространной портянки из Топ-1% самых длинных статей хабра.

Information

Rating
Does not participate
Works in
Registered
Activity