Pull to refresh

Comments 19

Я вообще проходимец, но как заметил это реализация формулы автора тупо на питоне,
чтобы реализовать такое на расте, полагаю, надо уметь пользоваться математическими функциями в этом языке.

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

  • задача классификации: sigmoid activation + cross-entropy loss

  • или задача регрессии: linear (no) activation + quadratic loss

У меня вот есть такая интерактивная иллюстрация работы ма-а-а-аленькой сеточки, которая играет в змейку: https://shashkovs.ru/ai/

ReLU + чем толще линия — тем больше слагаемое
ReLU + чем толще линия — тем больше слагаемое

Очень интересно что такое казалось бы сложное задание, нейросеть может выполнить на таком маленьком количестве нейронов.

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

Ну игры даже сегодняшние развивают мозг, различные механики к которым нужно найти подход, различные логические задачи в играх все так же встреачаются опять же. Да условный cookie clicker мало что разовьет, как и змейка, но все же это уже лучше чем смотреть в стену)

Там есть вариант, когда оно играет в змейку вообще без промежуточного слоя: 4 входных и 3 выходных, то есть всё управление — это 15 весов.

А что за информация на входе "яблоко". То, что это угол в радианах, я понял, но от чего он отсчитывается? Просто если змейка приближается к яблоку строго справа, то он равен 3,14, а если с любой другой стороны, то ноль.

Для змейки всегда есть положение «вперёд». Во входе «яблоко» угол от положения «вперёд» в радианах.

А, ну и конкретно про 3.14. Для вычисления угла используется atan2, а для приближения справа Math.atan2(0, -1) = 3.1415...

Т.е. Если змейка приближается к яблоку, находясь с ним на одной линии, то угол должен быть 0, а если удаляется, то 3.14?

Это было бы логично, но у вас угол равен 0, если змейка приближается сверху, слева, Снизу. И почему-то равен 3,14, когда змейка приближается справа. Во всех случаях - она приближается точно по линии яблока

Змейка ползёт справа налево

Ползёт слева направо

видимо из-за этого змейка весьма однобоко ест яблоки.

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

P.s.

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

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

Покажите как используется ваш класс в итоге и что является результатом работы. Покажите код, который делает это "Давайте обучим нейронную сеть на 1500 итерации". Спасибо.

А почему именно сигмоид? Почему не relu, например?

Просто насколько мне известно, от сигмоида отказываются из-за того, что при обучении он любит уходить намертво в 1 или 0. Ну а если не уходит, то по сути мы получаем ± градиент как при relu

Думаю, автор просто прочитал только первую главу учебника по ML, а там было написано про перцептрон с активацией на сигмоиде. Ну и вот

С удовольствием прочитал бы ваши статьи и пообсуждал их, но увы их 0)

Sign up to leave a comment.

Articles