Pull to refresh

Comments 13

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

Исходя из постановки задачи скорее стоит прочитать про цепи Маркова и алгоритм Витерби.

Про алгоритм не слышал. Спасибо. Почитаю. Что касается цепей Маркова, то направление исследования иное.

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

У Вас две неоднородные цепи Маркова которые вы пытаетесь проверить на корреляцию между собой.

Вместо того, чтобы думать как прикрутить какой-нить коэффициент спирмана для оценки корреляции в идеале с O(n) - например ограничив глубину шагов используемых для корреляции, (исходя из описания "в лоб" явно будет O(n^2))

И постараться исходя из области реального применения впихнуть их в одну цепь с количеством состояний существенно меньше чем n^2, чтобы сложность опять же к квадрату не подскочила вы сразу играться в ML? Даже использование Витерби в вашем случае это заход с козырей .

Так что соглашусь с предыдущим оратором, выбор того, что почитать стоит начинать с его списка.

поправка O(nlogn) и O(n^2 logn) - там же еще сортировка для ранжирования будет

Вы бы хоть привели словесное описание алгоритма вычисления этого коэфициента.


Вроде по постановке задачи оно должно считаться для какой-то последовательности. Но код приведен только для НКА, который используется для генерации последовательности.

Вот НКА и генерирует эти последовательности (состояние, действие) (следующее состояние, какое-то действие) ...

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

Чтобы проверить - строим граф. Вычисляем коэффициент get_ku.

В некотором смысле это похоже как собрать картину по пазлам. Если ku близко к единице, то такой граф (как собранная картинка) близок к детерминированному и можно составлять маршруты в таком графе.

Эти графы с высокой однозначностью уже могут участвовать в двух типах соединений. Что позволяет строить сложно иерархические их структуры.

ЗЫ если попробовать посчитать ku скажем двух последовательностей ( угол поворота листочка и цвет машины ) , то этот коэффициент примет маленькой значение. Поскольку одно на другое не влияет

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


Может, я, например, питон не знаю. Или даже если и знаю, но разбираться в вашем недокоментированном коде не очень приятно. Что за get_yfx? Что мерджит merge? fORx?!


Без этого статья странная: Вот какой-то код, он что-то, названное "коэффициентом однозначности", считает. Вот график. В этом конкретном примере вроде как смысл этот коэффициент несет.

Ну вы можете описать, как ваш коэффициент вычисляется?

Отнесем количество переходов, как если бы все переходы были однозначны,  к всем случившимся.

Пусть имеется множество {a, b, c, d}. Некоторые из элементов могут быть состояниями, некоторые действиями.

Предположим, что действиями будут {a, b}, состояниями {c, d}. Пусть имеем: с|d=a(c), с|d=b(c), c=a(d), с|d=b(d).

Здесь "|" означает "либо". Так с|d=b(d) означает: из состояния d при действии b следует либо c, либо d.

Попробуем иначе интерпретировать. Предполагаем: действия {a, c}, состояния {b, d}. Пусть имеем: b=a(b), b|d=c(b), d=a(d), b=c(d).

Разница, если ее оценить количественно, в более однозначном поведении второй гипотезы. В первом случае коэффициент однозначности, взятый как отношение как если бы все переходы были бы однозначны к всем случившимся переходам,  будет равен 4/7. Во втором случае он будет равен 4/5. Или, другими словами, мы имеем почти детерминированное пространство состояний.

Что мерджит merge? fORx?!

merge - объединят два графа в один. Это нужно, так как оригинальный граф видим видим лишь частично в каждом наблюдении. По каждому наблюдению строим граф. И объединяем с предыдущими наблюдениями.

fORx - у нас же 2 последовательности. Вот и проверяем пары: (действие, состояние), (состояние, действие)

Вообще, все вертится вокруг базовой формулы: Y=F(Х), где Y - это next_X

Вопрос в том, что не знаем где состояние и где действие.
В какой реальной ситуации такое встречается?
#Пусть имеется 4 последовательности. 
#Вторая изменяет первую. Четвертая изменяет третью.
#Четвертая к первой - получим неоднозначть (из 3 при действии -1)
 1  3  2  3  1 
+1 -1 +1 -2 +1 
 1  2  1  2  1
+1 -1 +1 -1 +1

Если заменить каждый из этих элементов. Например, 1 на F, +1 на C, -2 на Q и т.д, то как понять что действует на что? Вот максимизация коэффициента однозначности и будет тем ориентиром, к которому нужно стремится.

Применяться может везде, где необходимо выявить законы этого мира.

Пусть в незнакомой комнате имеются 2 люстры и 2 выключателя. Как определить какой выключатель к какой люстре относится? Пусть Вы наблюдатель, а два других человека в случайном порядке меняют положение выключателей. А Вы регистрируете как положение выключателей, так и горят ли люстры. В итоге должны определить что на что действует. Типичная исследовательская задача.

два других человека в случайном порядке меняют положение выключателей. А Вы регистрируете как положение выключателей, так и горят ли люстры.
В таком случае для наблюдателя понятие «действие» отсутствует. Вы наблюдаете смену состояний некого чёрного ящика и ищите корреляцию между его параметрами, доступными для наблюдения.

Действия возникают только в том случае, когда наблюдатель перестаёт быть наблюдателем и вмешивается в процесс смены состояний объекта, начинает им управлять. Не кто-то неизвестный переключает выключатели, а этот самый «наблюдатель». В вашем же случае «действие» — это чисто условность, корреляция между параметрами, где одно событие следует перед другим.

«Неоднозначность» же возникает из-за того, что у вас марковская цепь, у неё нет памяти, а вы её пытаетесь перевести в конечный автомат снятием этой «неоднозначности».

Действия возникают только в том случае, когда наблюдатель перестаёт быть наблюдателем. Не кто-то неизвестный переключает выключатели, а этот самый «наблюдатель».

Не вижу смысла логику «привязывать» к наблюдателю. Не о людях ведь речь....

«Неоднозначность» же возникает из-за того, что у вас марковская цепь, у неё нет памяти, а вы её пытаетесь перевести в конечный автомат снятием этой «неоднозначности».

Не имеет значения какие последовательности берутся: марковские или нет. Вот пример не марковской: A A B B A B B A A B B A B B A B B A B B A A B B A B B A B A B A. Но последовательность все же неоднозначна. Коэффициент однозначности здесь равен 2/4

Sign up to leave a comment.

Articles