Pull to refresh

Comments 76

исправил, за полминуты — трое написали :) Всем, спасибо.
Это типичная оптимизационная задача. Ее надо решать методом ветвей и границ, генетическими алгоритмами или чем-то таким.

ИНС, обучение с учителем и так далее — немножечко про другое.
«генетическими алгоритмами» — не получится, у вас нет функции пригодности в явном виде, вам её найти как раз надо путем reinforcement learning, а точнее путем коррекции весов у уже обученного учителем перцептрона.
1. Генерируем некую выборку вариантов исходных данных.
2. Прогоняем по всем стратегию с неким набором параметров.
3. Суммируем или находим среднее значение. Вуаля, вот он наш критерий оптимизации.

Ваша задача давно решена в рамках имитационного моделирования и методов оптимизации (ака «исследование операций»).

Использовать метод классификации, каковым является перцептрон для решения задач оптимизации — нонсенс.

> Суммируем или находим среднее значение

Ответ неверен, садись два. Читаем статью внимательнее.
Читаю: «Задача состоит в выборе стратегии при которой за 80 ходов можно добыть наибольшее количество денег.»

Ваш текст, ваш критерий. Я не дописал, поэтому возможно непонятно. Читать: «Суммируем или находим среднее значение от добытых денег в каждом проходе».
Действительно не понятно было. Но тогда проблема у вас в другом.

Критерий действительно мой, и все хорошо если бы мой критерий был бы выражен математически. Но на каждом отдельном шаге Вы НЕ сможете вычислить сколько денег вам нужно. Если начнете применять «среднее или максимизировать» — то безвозвратно будите получать плохие стратегии. Собственно — среднему агент и так научен изначально. На самом же деле что нужно делать «среднее или максимизировать или что-то еще» зависит от истории, и исходит из других критериев (наличия пищи/металла) — но как неизвестно. Именно поэтому эту задачу я называл еще «двухуровневым целеполаганием». И проблематика как раз заключается вычислить собственно вид вот этой операции, которую вы так легко определили как "«Суммируем или находим среднее значение от добытых денег в каждом проходе»"
Проход — это не один шаг стратегии, а полный проход всей игры. Задача-то стоит набрать максимальное кол-во золота за ВСЮ игру.

Этого можно достичь либо построив опять же мат. модель ВСЕЙ партии (что очень и очень сложно, как вы правильно заметили и мне сильно-сильно сомнительно, что ее решит перцептрон) или имитационным моделированием, что медленно, но при наличии достаточных вычислительных ресурсов — дешево.

Да, гонять модель, естественно, надо на некотором большом кол-ве разных вариантов игрового поля. Иначе стратегия оптимизируется под конкретное поле.
И в этом случае вы словите проблему, агент просто никогда не найдет максимумы кол-во золота за ВСЮ игру… ну хоть тресни — не будет он находить такие стратегии.
Сильно зависит от того, как именно мы моделируем стратегию.

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

Если мы будем гонять стратегию на одном поле, то максимум рано или поздно найден будет. Для этого конкретного поля.
Вы мне изложили основы Q-learning, спасибо в курсе. Это не работает. Время когда «максимум рано или поздно найден будет» — не устраивает — это время сродни времени существованию Вселенной :)
К Q-learning этот подход имеет очень отдаленное отношение.
тогда учитесь, я вас не задерживаю :)
Такое впечатление, что я разговариваю с собой лет 8 назад. Вам нужно понять лишь одно, задача поставлена так, чтобы такие примитивные решения исключить.
Конкретики как всегда нет ;)

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

Она далеко не типичная… проверено.
Проверено британскими учеными?

Не знаю как у вас, а у нас студенты на 4-м курсе подобное решают в курсовых.
Скиньте хоть одну такую курсовую — иначе это треп. Скорее всего вы не понимаете проблемы.
Гуглим «экономическое моделирование», «имитационное моделирование», «методы оптимизации». Таких курсовых полно во всех вузах ;)

tac, понимаете… Я по этой проблематике пишу диссертацию. И у меня есть научрук, диссовет и так далее. Поэтому ваше мнение о моем понимании проблемы меня не интересует. Опровергать их, как вы любите, не стоит. Вы себя уже дискредитировали опровергая Фаулера ;)))

Еще раз — вы пытаетесь решать оптимизационную задачу методом не предназначенным для решения таких задач. Вам, кстати, об этом уже писали, кажется, в статьях про сворачивание белков.

Собственно, пишу я не вам, а читателям этой статьи, которые не «в теме».
Боюсь вам придется написать вашу диссертацию, а потом понять о чем говорят те кто их писал :) ну, и между прочим «проверенно», или точнее перепроверено — не британскими, а вполне нашим латвийским профессором. Ему мне нужно было лишь рассказать о проблеме и 10 минут было ясно, что это не то о чем вы говорите заблуждаясь. Впрочем зная вас мне не интересно с вами говорить, Вы молодой нахал, увы ничего не смыслящий в том, о чем тут говорится.
гуглите ваши сказки далее, ничего даже близкого не найдете! Это вам нужно, я это уже давно проходил…
Вы описали не обучение с учителем, а обучение с подкреплением (reinforcement learning).
Использовать в качестве «обучающего сигнала» всю партию — безумие, конечно. На вход должно подаваться состояние мира в данный момент, плюс номер хода для привязки ко времени.
> На вход должно подаваться состояние мира в данный момент, плюс номер хода для привязки ко времени

Чем это отличается от «в качестве «обучающего сигнала» всю партию»? Ничем.

Я нигде не утверждал, что это «обучение с учителем», да это обучение с подкреплением, но выполняемое на перцептроне обученном изначально с учителем… Т.е. можно, конечно, было бы решать Q-обучением — но решения не получим, это не MDP… отсюда и возникает представление о решении с помощью «нескольких учителей».
Описание всей партии, как вы сами сказали, это вектор колоссальной размерности, к тому же плохо подходящий для обобщения. Состояние же мира в конкретный момент (или даже только окресностей) задаёт некоторую ситуацию, применимую во множестве партий. К этой информации достаточно добавить только указание на этап партии (я предложил номер хода, но это может быть даже слишком конкретно. Возможно, достаточно только {начало, середина, конец}), собственно, сделанный ход и общий исход партии. На массиве таких «отдельных» ходов плюс ассоциативная память вполне можно ожидать прогресса (получилось что-то вроде «ИИ на спичечных коробках»).

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

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

Начнем с простого — как по вашему перцептрон Розенблатта — обучается как? Получает в вашей терминологии «Обучающий сигнал»? Или что?
Это не моя терминология, это общепринятая терминология.
Да, все персептроны обучаются с учителем.
Нет. Перцептрон может обучаться по разному. Как с учителем, так и без. А его базовая версия получает «Подкрепление» — «молодец» в случае правильного ответа. Увы, почему то многие не в курсе…
Дайте, пожалуйста, ссылку на персептрон, обучающийся без учителя.
Изначальные варианты были бинарными и тернарными, поэтому дельта-правило, которое сейчас используется для подкрепления, для них абсолютно эквивалентно обучающему сигналу.
почитайте Розенблатта в оригинале (ссылку дать? или найдете) — уделите внимание Альфа-система подкрепления. Это без учителя.

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

Метод коррекции ошибки это и есть дельта-правило, которое, как я уже писал, в случае бинарной сети численно эквивалентно обучению с учителем.
> При появлении неправильной реакции вес изменяется на единицу, а знак (±) определяется противоположным от знака ошибки.

> «Обучающий сигнал» — это конкретный правильный ответ на данный стимул. > «Подкрепление» — это «молодец» в случае правильного ответа.

Тут мы имеем, что. В случае правильного ответа ничего не происходит. Из ваших «определений» это не подкрепление, ни обучающий сигнал.

А при неправильном — как раз дается не «молодец», и всё. Знак он может поменять сам. Т.е. это «подкрепление», а не «конкретный правильный ответ на данный стимул».

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

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

Тогда агент бегает или в соответствии с жестко заданной функции полезности в генетических алгоритмах, а так как ее надо меня — нам это не подходит. Или есть другой вариант использовать нейронные сети, вы их обучаем и получаем функцию полезности — как отображение входов/выходов, которую можно корректировать (другой вопрос не понятно как), но можем. И при этом нам не нужно такую функцию полезности получаемую нейронной сетью писать математически — собственно обученный перцептрон её и выражает, с тем бонусом, что он прогнозируем в тех местах, где он непосредственно не обучен, т.е. аппроксимирует то чего не знает явно.
> так как ее надо меня

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

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

> ошибка ограничена нулём и всегда можно оценить, насколько мы близки к идеалу

Это отличием не является. Перцептрон также может выдать ноль на своих выходах.
> выкидывания

вкидывания
Причём здесь ноль на выходах? Ошибка — это расхождение выхода и обучающего сигнала. Если она равна нулю, все молодцы, расходимся.
Причем тут ошибка как «расхождение выхода и обучающего сигнала». Мы похоже говорим о разном.

Еще раз. У обученного перцептрона ошибки на обучаемом множестве нет вообще.

Ну, допустим на входе два байта a и b. Мы решаем, что наша функции пригодности, это когда эти два числа станут нулем. Для этого мы учим перцептрон складывать эти два числа. После обучения перцептрон замечательно выполняет это сложение один в один как если бы считать на калькуляторе.

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

До сюда понятно?
Вообще непонятно. Как два байта становятся нулём при складывании? Что за агент и что значит «сравнивается по нему»? Как можно давать два числа и при этом стремиться давать их как-то иначе? Очень нетривиальное течение мысли, ещё и усугублённое отсутствием запятых.
К счастью, об этом писали не только вы.
Это знать надо, а вы не в курсе.
А вы, видимо, знаете, что я знаю, и что нет?
Простите, предпочитаю тексты, где меньше гонора и больше запятых.
В данном случае знаю, вижу по вашим комментариям, где вам объясняешь именно это — а вы не в зуб нагой. А про гонор — обратитесь к себе, его более чем достаточно.
Насколько я вижу, мои объяснения вам тоже впрок не идут. Боюсь, вам просто не хватает формального образования в данной области. С терминами там разобраться, с практикой применения, с логикой развития. Может, тогда ваша энергия и пошла бы в продуктивное русло.
Дорогой, не вам мне такое советовать… А с чем мне нужно разобраться — поверьте я знаю сам. Ваши объяснения — это студенческий лепет, я такого в свое время наслушался. Проблема там именно в шаблонности зазубренного материала. Он вам мешает применять мозг :) Не обижайтесь, вы достаточно знаете, но вот почему то уперлись на голом месте… а по сути мы еще и не говорили.
Интересно, почему вы взялись за нейросети, а не изобретение колеса, например? Оно тоже как-то очень шаблонно делается, бездумно прямо таки.
Ваше упорное не понимание (или просто гонор?) начались после комментария, который вы упорно не могли понять. Так как коллега выше тоже плавает в этом — вот и пришлось написать развернуто.

Не думайте, что вам это известно — может вы где-то мельком видели, но не прочувствовали — это уж точно.
Почему вы считаете, что это именно моё непонимание? Почему не допускаете, что ваше? После этого комментария стало уже очевидно, что вы просто не знаете, что такое «обучающая выборка», «ошибка», «подкрепление», «функция полезности», «алгоритм обучения». Думаете, что можете трактовать эти термины интуитивно, очевидно не удосужившись даже заглянуть в формулы. А это не так. Этому учиться надо. Не разглагольствовать, не отсылать собеседников к собственным пространным объяснениям собственных великих идей, а читать учебники и делать заметки. Чего вам и желаю.
Вы мерится сюда пришли? У меня диплом кафедры и 10-ок статей в научных журналах про те вещи, которые я якобы не знаю.

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

И кстати, если вас не понимают — это в первую очередь ваши проблемы. Другое отношение неконструктивно.
Почитайте предыдущие статьи этого деятеля и их обсуждения. Там много смешного ;)
ererer Вас занесло, прошу не продолжайте. Если есть желание говорить по сути давайте, но не так к чему вы скатились. Вы поняли зачем нужна функция пригодности выраженная нейронной сетью?
Нет такого понятия «функция пригодности», и у нейросети нет ничего, выразимого похожим образом. Что ещё тут понимать?
Fittness function — это функция полезности. Пользуйтесь устоявшейся терминологией.
У нейросети нет функции полезности.
Если вы не знаете устоявшихся синонимов — это проблема — показывает поверхностность в обучении.
О да, это моя ужасная проблема. Главное, что не ваша.
У нейросети нет функции полезности, как бы вы её не называли.
А вы по прежнему не умеете читать, это вторая ваша ужастня проблема. Я не говорил, что у нейросети есть функция пригодности.
Вам в политику надо.
Короче это полный слив, когда выучитесь и не раньше будем говорить. А пока не о чем.
Надеюсь, этого никогда не случится.
Жаль, что не выучитесь… но что ж поделать, одним студентом меньше.
Да, я искренне надеюсь, что никогда не сочту, что достаточно выучился. Особенно в ваших глазах.
Да что вы спорите о терминах? Пусть хоть «функция кошатности», лишь бы обговорили определение один раз.
Sign up to leave a comment.

Articles