пятница, 5 февраля 2010 г.

27.01.2003 - 28.01.2003 Page 36

Андрей Finder Плахов 27 января, 18:14
В подарок приму просто с радостью )))

Пока что вопрос даже в "существует ". По-моему, рано "создавать ", пока неизвестно, а существует ли вообще.

Кроме того, если мы научимся строить множество "ящиков ", реализующих данную инвариантность, то искать среди них нужный сможем и всеми уже отработанными методами - градиентный спуск aka back propagation, ГП, перебор и т.п.

--------------------------------------------------------------------------------
Иван FXS 27 января, 18:38
В чем - в контексте данного обсуждения - разница между "искомый " ( "искать среди них ") и "реализующий данную инвариантность "?
А плодить ... сорри, - строить, - "ящики " очень легко. Например, методом Монте-Карло: случайным пораждением ящиков случайной структуры со случайными параметрами.
Вам - сколько прислать: миллион ящиков или миллиард? ;-)

--------------------------------------------------------------------------------
Gen 27 января, 18:40
Андрей Finder Плахов

>По-моему, рано "создавать ", пока неизвестно, а существует ли вообще. <

О какой инвариантности идет речь?

--------------------------------------------------------------------------------
smollett 27 января, 18:43
2Андрей
Доброе утро господа, Андрей ты глянул на форум что я предложил?
И ежели не трудно в 2х словах о чем речь у меня от вас с Иваном в глазах рябит
:)

--------------------------------------------------------------------------------
smollett 27 января, 18:50
На форуме о времени у мяне в голове родился первый принцип создателя И. Не надо думать... что ты самый умный :)))

--------------------------------------------------------------------------------
DrDrew 2 Smollett 27 января, 18:56
я и никогда так и не думал... подыгрывал немножечко...

Ктонибуть на Конфу по ИИ в МИФИ, хотябы доклад ПОПОВА - съездить не соберется???

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 18:59
Добрый вечер, smollett %)
Глянул, мне кажется, нормально, а вот Ивану не нравится.

Мы конструктивно ругаем нейросети (ИНС) и арифметические сети (АНС). Вернее, ругаю я, а Иван выясняет, за что :), и почему это конструктивно :))

Есть вот такая теорема об аппроксимации, очень нравится сторонникам ИНС:

Теорема аппроксимации.
Для любой ограниченной кусочно-непрерывной функции и сколь угодно малого числа epsilon > 0, в множестве многослойных персептронов найдется такой элемент (= найдется такая сеть) и такие веса связей для него(нее), что значения выхода сети отличаются от значений функции не больше, чем на epsilon, на всем множестве входов.

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

Я бы хотел научиться находить множества конструкций, для которых верна аналогичные
теоремы, вот какие:

Теорема инвариантной аппроксимации
1) Для любой ограниченной кусочно-непрерывной функции, инвариантной относительно данной группы преобразований, и для сколь угодно малого числа epsilon > 0, в множестве ... найдется такая сеть и такие веса связей для нее, что значения выхода сети отличаются от значений функции не больше, чем на epsilon, на всем множестве входов.
2) Для любой сети множества ее выход инвариантен относительно данной группы преобразований.

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

Вот о чем, вкратце, я тут говорил. Иван пока еще не осознал мысль и возражает, не понимая, что я с ним не спорю :)
Нет, Иван, строить ящики нелегко... Построить миллион ящиков, выдерживающих данный инвариант? Вы это умеете? Я - нет.

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 19:20
2Gen
>О какой инвариантности идет речь?

О любой. :)
В качестве жизненных примеров групп инвариантных преобразований я предлагал
1) группу параллельных переносов, если вход организован как двумерная матрица
2) группу перестановок части входов, если все входы из этой части "равноправны ".

--------------------------------------------------------------------------------
smollett 27 января, 19:21
>а вот Ивану не нравится
А що ему ваще нравится, акромя шахмат?

Пасибо за разъяснения я в этом споре пасс, как это порусски - не компетентен.

А форум надо глянуть изнутри что я Вам и предлагал.

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 19:22
Что-то стихло всё... ни шороха...

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 19:23
>А що ему ваще нравится, акромя шахмат?

Автоматическая игра на бирже, например :)

--------------------------------------------------------------------------------
DrDrew 2 Finder 27 января, 19:36
есть
такое направление на уолстрите... что вы имеете ввиду?

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 19:39
>я в этом споре пасс
Что за дезертирство? Smollett, как не стыдно! :))

>как это порусски - не компетентен
А в этой теме пока что никто не компетентен... Все, что нужно для понимания, я написал в этом единственном посте. Может, изложение слишком громоздкое и "наукообразное ", но идея-то простая.

Где бы нам взять стадо черных ящиков, которому при обучении не нужно было в каждом примере повторять, что 2*3 = 3*2 = 6; 7*8 = 8*7 = 56; ... а можно было сразу сказать A*B = B*A; и потом уже учить: 2*3 = 6; 7*8 = 56; ...

ИНС - не такие :(
АНС - не такие :((
Традиционные алгоритмы - такие, но они не стадо черных ящиков :))

Функи мои любимые - не такие. Но, может, их можно сделать такими?..

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 19:40
2DrDrew
Я имею в виду, что ИванFXS именно этим и занимается, уже по крайней мере года полтора, может, и больше - я точно не знаю.

--------------------------------------------------------------------------------
Иван FXS 27 января, 19:55
Андрей Finder Плахов 27 января, 19:23
>А що ему ваще нравится, акромя шахмат?
Автоматическая игра на бирже, например :)
" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "
"Автоматическая игра на бирже " - это неправильная интерпретация понятия МТС.
Вообще, МТС (=Механические Торговые Системы) - это ИСТОРИЧЕСКИ сложившийся термин. А по сути - речь идет о ФОРМАЛИЗОВАНЫХ ситемах торговли, - когда решение о торговых операция (покупке и продаже "биржевых активов ") принимаются ФОРМАЛЬНО на основе переработки некоторым АЛГОРИТМОМ имеющейся (на момент принятия этого решения) цифровой (в смысле - количественной) информации.

Эта информация КАК ПРАВИЛО представляет собой - ЦЕНОВЫЕ РЯДЫ (=ценовую историю), то есть решение принимается на основе ФОРМАЛЬНОГО анализа динамики цен.

Но суть задачи, конечно, не в том, чтобы этот алгоритм ПРИМЕНИТЬ, а втом, чтобы его РАЗРАБОТАТЬ ...
Такой вот маленький ликбез ...
НП, Иван FXS.

--------------------------------------------------------------------------------
Иван FXS 27 января, 20:13
Андрей Finder Плахов 27 января, 19:39
ИНС - не такие :(
АНС - не такие :((
" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "
Ваша инвариантность - это ОБЩАЯ ИДЕЯ, исчерпывающе формализовать которую - не так уж и легко!
Смотрите: чтобы обсуждать инвариантность-по-сдвигу (и - всего-то на 1 ячейку!), Вам пришлось потребовать, чтобы в исходном "сигнале " - "полоса значений ", выходящая за границу "кадра " при таком сдвиге - имело нулевые значения сигнала ...
(((кстати, ноль температуры - где у нас будет: по Цельсию, по Фаренгейту или абсолютный?)
---------------------------
Но тем не менее - могу предложить Вам навскидку - аж целых два варианта решения:
1. при генетическом порождении новых экцемпляров НС - просто забраковывать все те из них, которые не обладают данной инвариантностью
2. организовать паральльно вычисления (одной и той же сетью, точнее - ее клонами) всех входных паттернов, получающихся инвариантными "сдвигами " (из того, конкретного одного паттенрна, который нам нужно обработать), а в качестве выходного сигнала - использовать СРЕДНЕЕ значение (или - другую инвариантно-однородную функцию) сигналов на выходе всех этих "клонов ".
НП, Иван FXS.

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 20:30
>навскидку - аж целых два варианта
Здорово! Я, собственно, и не хотел сказать, что задача в такой постановке так уж сложна... Я предложил обсудить это, чтобы после мы могли перейти к нечетким инвариантам, и чтобы в будущем при обсуждении идей мы принимали во внимание возможность реализации идей инвариантов.

>забраковывать все те из них, которые не >обладают данной инвариантностью

Как проверять-то? На всех входах? :)
В отличие от Вас, я пока не хочу хранить "профиль " для каждой функции. И даже если мы его все-таки храним, инвариантность на "профиле " не говорит об инвариантности вообще... Да и, прямо скажем, бОльшая часть порождаемых функций будет сразу же отправляться в утиль (при достаточно сложных инвариантах - практически все) - как-то это очень неоптимально.

>в качестве выходного сигнала -
>использовать СРЕДНЕЕ значение (или -
>другую инвариантно-однородную функцию)
>сигналов
Это уже интереснее, но сомнение в этом случае вызывает пункт 1 теоремы. Действительно ли любую ф-ию можно таким образом представить?.. Может быть, не среднее, а что-то другое?...

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

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

--------------------------------------------------------------------------------
Комбинатор 27 января, 21:06
2 Андрей Finder Плахов

> Где бы нам взять стадо черных ящиков,
> которому при обучении не нужно было в
> каждом примере повторять, что 2*3 = 3*2
> = 6; 7*8 = 8*7 = 56; ... а можно было
> сразу сказать A*B = B*A; и потом уже
> учить: 2*3 = 6; 7*8 = 56; ...

Видимо, я чего-то недопонимаю. Если то, что A*B= B*A известно априори, то что нам мешает вначале привести функцию, подаваемую на вход ЧЯ к стандартному виду, учитывающему все известные нам инварианты (в данном случае, например, наименьшее число всегда должно стоять первым), а потом уже подавать её на вход ЧЯ? Несколько сложнее, (но и потенциально много интереснее), мне кажется, добиться того, что бы получив в обучающей выборке достаточно много примеров, ЧЯ догадался бы САМ, что А*B= B*A, A+B = B+A, A-B = -(B-A) и т.д., и стал бы использовать эти свойства для получения ответов на тех входных векторах, которых в принципе не было в обучающей выборке.

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 21:15
Комбинатор

>Если то, что A*B= B*A известно априори,
>то что нам мешает

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

>Несколько сложнее, (но и потенциально
>много интереснее), мне кажется, добиться
>того, что бы получив в обучающей выборке
>достаточно много примеров, ЧЯ догадался
>бы САМ

Разумеется! Я к этому и хочу подвести, только сначала хотелось бы, чтобы мы поняли, как их использовать, если уж мы их "нашли "... Тогда, например, будет понятнее, в каком виде их искать.

--------------------------------------------------------------------------------
Иван FXS 27 января, 21:15
Комбинатор 27 января, 21:06
... вначале привести функцию, подаваемую на вход ЧЯ к стандартному виду ...
" " " " " " " " " " " " " " " " " " " " " " " " "
А ведь и правда, Андрей, это - решение Вашей проблемы!!!
Например, если хотим инвариантность к сдвигам, то - в качестве предобработки входного сигнала, - находим "центр тяжести " входного паттерна и сдвигаем паттерн так, чтобы этот центр тяжести находился в центральной точке кадра!
НП, Иван FXS.

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 21:23
Иван, это очень плохое решение %)))

Это решение в стиле "а давайте все сделаем руками " :)

Если подходить с этой стороны, то ставится вот такая, вполне детерминированная задача: нужен способ по какому-нибудь формальному описанию инварианта автоматически находить соответствующее "приведение входа ".

Желательно не единственное. Например, равноправные входы можно упорядочивать по возрастанию, а можно - по значению
|sin(...)|
Если нам важнее всего наибольший вход, то первое правильнее (потом проще обучать), а если важнее всего потенциальная энергия маятника :), то второе...

Заметим, "приведение входа " - это не единственный метод... Мне не меньше нравится то, что Вы предлагали ( "размазывание ответственности за выход по копиям ").

--------------------------------------------------------------------------------
Василий Семи-Булатов 27 января, 21:36
Комбинатор,

> Несколько сложнее, (но и потенциально много интереснее), мне кажется, добиться того, что бы получив в обучающей выборке достаточно много примеров, ЧЯ догадался бы САМ, что А*B= B*A, A+B = B+A, A-B = -(B-A) и т.д.

Сделать это совсем не сложно, просто поиск следует вести в пространстве программ, что приведёт к следующему априорному распределению вероятностей потенциальных решений: более короткие программы - более вероятны. Таким образом, рано или поздно будет найдено решение, 1) хорошо описывающее выборку, 2) компактное само по себе, 3) работающее достаточно быстро.

То есть, рано или поздно значку "* " из обучающей выборки будет сопоставлена функция умножения (если её нет среди исходных - не беда, она будет создана автоматически), "+ " - сложение, и т.д., что, в общем-то, и требовалось.

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 21:41
Василий Семи-Булатов

О, Василий, Вы появились. Я Вас ждал, чтобы сказать, что тезис "размер программы на разных языках ", как ни странно, неверен! Условно говоря, если язык допускает templates, как С++ (или является функциональным, как Caml), то размер программы может отличаться от размера байт-кода (или соответствующего ассемблерного кода) в любое число раз.

Таким образом, размер, увы, нельзя считать критерием простоты.

--------------------------------------------------------------------------------
Иван FXS 27 января, 21:41
Хм, а разве из формального описания (=определения) инварианта - не следует ВСЕГДА однозначно то, каков должен (может?) быть АЛГОРИТМ "НОРМАЛИЗАЦИИ " исследуемого объекта "по " этому инварианту:
перемещение некоторой "имманентной " точки паттерна в некоторую "удобно-выбранную " точку кадра - нормализация по перемеЩЕнию,
упорядочивание по какому-нибудь "удобному " признаку - нормализация по перемеШИВАнию ... и т.д.
---------------
"размазывание ответственности за выход по копиям " - ок, но это ведь намного более трудоемко!
НП, Иван FXS.

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 21:43
Имелся в виду тезис "размер программы на разных языках отличается в const число раз ".

--------------------------------------------------------------------------------
Андрей Finder Плахов 27 января, 21:51
Иван FXS
Может, и следует. Даже скорее всего. Я ставлю вопрос не "философский " (существует ли), а практический: в каком виде должно даваться это описание? Как именно построить обобщенный алгоритм нормализации? Что, неужели перемешивание и сдвиг - это все на практике встречащиеся инварианты? Нет, конечно! Группа движений плоскости (в т.ч. повороты), симметричность при замене (вход = -вход), периодичность функции (вход = вход+Т), все это тоже вполне практические инварианты. Да, и к ним можно легко найти соответствующие преобразования. А автоматически? Как ты говоришь, "извините за занудство " :)

> "размазывание ответственности за выход
>по копиям " - ок, но это ведь намного более трудоемко!

Да, к сожалению, но и более универсально.

--------------------------------------------------------------------------------
Василий Семи-Булатов 27 января, 22:03
Андрей Finder Плахов,

Я такого не говорил. Я говорил другое - размер наименьшей из возможных программ, выполняющей определённую функцию, для разных языков отличается не "в const число раз ", а с точностью до аддитивной константы. Которая, в свою очередь, не больше размера эмулятора, реализующего один язык программирования средствами другого.

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

--------------------------------------------------------------------------------
Иван FXS 27 января, 22:11
Дык этаааа ... "инвариант " - это ведь ЛЮБАЯ булева функция F, заданная на парах объектов, обладающая легко выписываемым набором свойств:
1. F(x1,x2)=F(x2,x1)
2. если F(x1,x2)=TRUE и F(x2,x3)=TRUE, то F(x1,x3)=TRUE
... и т.д.

Например, положительность числа - инвариант ... (в смысле - МОЖЕТ РАССМАТРИВАТЬСЯ как инвариант).
Третья значащая цифра в десятичной записи числа - тоже инвариант ... то есть их можно напридумывать - миллиард!

Соответственно, в ОБЩЕМ РАССУЖДЕНИИ никого "А автоматически? " тут существовать не может.
А в КОНКРЕТНОМ рассмотрения это "А автоматически? " - должно вытекать из этой самой КОНКРЕТИКИ рассмотрения ...
НП, Иван FXS.

--------------------------------------------------------------------------------
Комбинатор 27 января, 22:52
2 Иван FXS

> А ведь и правда, Андрей, это - решение
> Вашей проблемы!!!
> Например, если хотим инвариантность к
> сдвигам, то - в качестве предобработки
> входного сигнала, - находим "центр
> тяжести " входного паттерна и сдвигаем
> паттерн так, чтобы этот центр тяжести
> находился в центральной точке кадра!

Собственно, этот метод уже давно штатно применяется в большинстве распознавателей, основанных на нейросетях. Например, перед распознаванием рукописного символа он приводится к стандартному размеру и стандартной ориентации (инварианты к преобразованию масштаба и поворота), толщина его линий тоже стандартизуется (например, с помощью скелетизации) и т.д. Другое дело, что, возможно, не все инварианты, используемые зрительной системой, столь очевидны, как перечисленные выше, так что проблема автоматического поиска всевозможных инвариантов во входном потоке данных, это, ИМХО, одна из основных проблем ИИ. Ведъ, например, практически все законы физики можно сформулировать в терминах законов симметрии (инвариантости) физических величин к различным преобразованиям...

--------------------------------------------------------------------------------
Иван FXS 27 января, 23:49
А вот еще один движок:
http://www.livejournal.com/users/fxseminar/
- про него и здесь, на Мембране статья была:
http://www.membrana.ru/articles/internet/2002/03/14/022100.html

Туда, правда, доступ (в смысле - в юзеры) не слишком простой ... Но - возможен!
Завтра буду в фичах разбираться ... сегодня уже домой пора.
НП, Иван FXS.

--------------------------------------------------------------------------------
supremum 28 января, 09:55
to Андрей Finder Плахов 27 января, 18:59
"Есть вот такая теорема об аппроксимации... Я считаю, что ее практическая слабость состоит в том, что на реальных задачах множество многослойных персептронов слишком велико для быстрого поиска нужного "

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

"Я бы хотел научиться находить множества конструкций, для которых верна аналогичные
теоремы, вот какие:

Теорема инвариантной аппроксимации
1) Для любой ограниченной кусочно-непрерывной функции, инвариантной относительно данной группы преобразований, и для сколь угодно малого числа epsilon > 0, в множестве ... найдется такая сеть и такие веса связей для нее, что значения выхода сети отличаются от значений функции не больше, чем на epsilon, на всем множестве входов.
2) Для любой сети множества ее выход инвариантен относительно данной группы преобразований. "

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

--------------------------------------------------------------------------------
Inex 28 января, 10:53
Ну вот, опять больше полусотни мессаг напостили :((

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 12:12
>Если выполнен пункт 1, то пункт 2
>выполняется автоматически

Ну почему автоматически? Я не понимаю, как именно Вы поняли данное условие, поэтому сложно сказать, в чем Вы ошиблись, но на самом деле ничего подобного.

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

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

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

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

Но это все тоже не главное... Нам хотелось бы использовать и те инварианты, которые система находит сама. Любой закон и любую зависимость можно представить себе как нечеткий инвариант (пока не буду давать формального определения того, что это значит. Давайте его понимать, как "почти " инвариант). Я склонен считать, что слова "понятие " и "инвариант " - синонимы. Слова "ситуация " и "класс инвариантных входов " - тоже синонимы. Мне кажется, что пока мы не научимся их использовать в таком понимании (для начала всего лишь использовать, даже не находить), мы не продвинемся вперед.

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 12:26
Василий Семи-Булатов,

Да, верно. Я ошибся. Тем не менее, мне кажется, что перебором (даже направленным) нельзя случайно отыскать программу такого размера, как интерпретатор Caml. :)

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

--------------------------------------------------------------------------------
Наглый Змий 28 января, 12:31
Про инварианты.

А не кажется ли уважаемым Сэрам, что решение проблемы с инвариантностью должно происходить в два этапа?
На первом происходит определение типа инварианта и его учет,
А на втором - уже собственно аппроксимация.

Первый этап не так страшен, как кажется - по идее, сетка Кохонена должна справится. Она всего-то должна переставить входы на выходы так, чтобы учесть инвариантность.

Количество входов аппроксиматора при этом существенно сократится, и он будет заниматься собственно аппроксимацией, например, синуса от -pi до pi, а не лезть в загугольщину.

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

--------------------------------------------------------------------------------
Иван FXS 28 января, 12:44
Андрей Finder Плахов 27 января, 18:59
2) Для любой сети множества ее выход инвариантен относительно данной группы преобразований.
" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "
Андрей, этот пункт не является, вообще говоря, ОБЩЕУПОТРЕБИТЕЛЬНЫМ: имеет смысл только для "преобразователей ", выход котрых имеет ту же "размерность " (= интерпретацию), что и вход ...
----------------------------------
Кстати, Вы ведь пока не дали ОПРЕДЕЛЕНИЯ инваринта ...
А приводимые Вами примеры - они все из области распознавания образов. А это, как мы уже обсуждали, - есть только одна из ПЕРЕФЕРИЙНЫХ (=инфраструктрных) задач в рамках "темы ИИ ".
-----------------------------------
" " "Нам хотелось бы использовать и те инварианты, которые система находит сама " " "
- для этого перед системой нужно ПОСТАВИТЬ такую СПЕЦИАЛЬНУЮ задачу (=специальный режим работы/обучения) - поиск инвариантов, научение работать с инвариантами.
То есть - нужно, например, подать на вход "файнридера " очень много изображений буквы "А ", а на выход подавать ASCII-код "А ". (((В режиме обучение - Вы ведь помните - сигналы подаются и на вход, и на выход ...)))
НП, Иван FXS.

--------------------------------------------------------------------------------
Иван FXS 28 января, 12:59
Наглый Змий 28 января, 12:31
... сетка Кохонена должна справится. Она всего-то должна переставить входы на выходы так, чтобы учесть инвариантность.
" " " " " " " " " " " " " " " " " " " " " " " " " " " "
Cетка Кохонена не ПЕРЕставляет, а РАСставляет: у ней на вЫходе - карта, а на входе-то отнюдь не карта (и - не картЫ), а - "россыпь " исследуемых "экземпляров "...

------------------------------
Кстати, ряд Тейлора аппроксимирует функцию в точке, а не на интервале, ...
" " " " " " " " " " " " " " " " "
- отнюдь: не в точке, а в ОКРЕСТНОСТИ, которая - при достаточной длине ряда - может быть как угодно большой ...

--------------------
... и на роль черного ящика он плохо подходит.
Тут надо брать систему функций, ортогональных на заданном интервале.
" " " " " " " " " " " " " " " " " " " " " " "
С этим - согласен.
НП, Иван FXS.

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 13:04
>Андрей, этот пункт не является, вообще говоря, ОБЩЕУПОТРЕБИТЕЛЬНЫМ: имеет смысл только для "преобразователей ", выход котрых имеет ту же "размерность " (= интерпретацию), что и вход ... <

Нет, нет, я совсем не о том говорил. Выход инвариантен := выход не меняется при преобразованиях входа (или меняется заранее известным образом).

Например, если выход обозначить f, и входы х и y, то тождество f(y,x) = f(x,y) означает инвариантность выхода относительно перестановки входов.

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 13:09
>Наглый Змий 28 января, 12:31
Про инварианты.

А не кажется ли уважаемым Сэрам, что решение проблемы с инвариантностью должно происходить в два этапа? На первом происходит определение типа инварианта и его учет
<

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

--------------------------------------------------------------------------------
Комбинатор 28 января, 13:17
Андрей Finder Плахов

> Тем не менее, мне кажется, что
> перебором (даже направленным) нельзя
> случайно отыскать программу такого
> размера, как интерпретатор Caml. :)
> Если мы ведем перебор, то увеличение
> минимального размера _на_ константу
> увеличивает время, необходимое на
> нахождение такого решения, _в_
> константу. Если константа такого
> размера, как интерпретатор языка, да
> еще и возвести как минимум двойку в
> такую степень, то... ну, в общем, вы
> меня поняли?

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

--------------------------------------------------------------------------------
Иван FXS 28 января, 13:18
Андрей Finder Плахов 28 января, 13:04 Например, если выход обозначить f, и входы х и y, то тождество f(y,x) = f(x,y) означает инвариантность выхода относительно перестановки входов.
" " " " " " " " " " " " " " " " " " " " " " "
Подождите, у Вас f - это сеть (=черный ящик) или функция, которую она (он) аппроксимирует?

Если ФУНКЦИЯ инвариантна, а сеть ее аппроксимирует, значит - и сеть тоже получится инвариантной ... То есть пункт 2 следует автоматически из пункта 1!
НП, Иван FXS.

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 13:24
Иван FXS, да нет, не следует же!
Пункт 1 означает, что искомая функция заведомо представляется черным ящиком из данного набора.

А пункт 2 означает, что в данном наборе нет черных ящиков, чьи выходы были бы неинвариантны. Поэтому и поиск не ведется по заведомо неверным решениям.

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

--------------------------------------------------------------------------------
Наглый Змий 28 января, 13:29
Про инварианты.

2Андрей Finder Плахов
>Кажется. И? Как же будет происходить "учет "? Что-то я не понимаю, причем тут сеть Кохонена. Она будет всего лишь кластеризовать входы по евклидову расстоянию, а нам совсем не это нужно...

Я вот как это представляю. Есть два устройства - "кластеризатор " и "апроксиматор ", задача которых - найти аппроксимацию f(g(X)) наблюдаемой функции f^(X).
Задача кластеризатора - искать такие Хi, для которых f(X) равны, и собирать их в кластеры, которым соответствует выход g.
Понятно, что это не чисто кохонен, но работает по тем же принципам.

2All
Кстати, а действительно ли инвариантов (имеющих практическое значение) настолько много, что их нельзя априорно учесть?

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 13:40
Комбинатор
>Это справедливо лишь в том случае, если на входе мы имеем белый шум. Но реальные данные, с которыми мы работаем, всегда структурированы, что позволяет избежать экспоненциального роста дерева перебора за счёт учёта тех самых инвариантов. <

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

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 13:50
>Кстати, а действительно ли инвариантов (имеющих практическое значение) настолько много, что их нельзя априорно учесть? <

Это хороший вопрос.
Насчет себя скажу, что мне на практике встречались следующие: топологические инварианты входа; геометрические инварианты (если вход - набор координат точек на плоскости, то повороты, симметрии, растяжения и т.п.); однородность по группам входов (например, если пары входов (1,2), (3,4), (5,6) можно менять местами как угодно); инвариантность при замене X = const - X; инвариантность при замене X = X + T, T - период;
и, видимо, это всё...

Но это что касается инвариантов "жестких ".
А вот "нечеткие " бывают гораздо разнообразнее (простите за то, что я все "обещаниями кормлю "). Даже задачу Егорова "разделение входа на слова " я мог бы попытаться изложить на этом языке. Времени только пока нет.

--------------------------------------------------------------------------------
Inex 28 января, 14:20
> >Кстати, а действительно ли инвариантов (имеющих практическое значение) настолько много, что их нельзя априорно учесть? < <
В каждой частной задаче будут возникать свои инварианты. И что самое противное, инварианты зачастую появляются лишь на "высокоуровневом " описании входных данных.

ЗЫ поэтому рассматривать однородные системы (такие, например, как сети Кохонена) для решения интеллектуальных задач крайне нерационально

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 14:29
2Inex
Поддерживаю

--------------------------------------------------------------------------------
Комбинатор 28 января, 15:42
2 Inex

> И что самое противное, инварианты
> зачастую появляются лишь
> на "высокоуровневом " описании входных
> данных.

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

2 Андрей Finder Плахов

> Но это что касается
> инвариантов "жестких ".
> А вот "нечеткие " бывают гораздо
> разнообразнее (простите за то, что я
> все "обещаниями кормлю ").

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

--------------------------------------------------------------------------------
Андрей Finder Плахов 28 января, 16:21
2Комбинатор
И снова я согласен :) Здорово-то как!

Насчет "нестрогого инварианта порядка дельта ". Это определение вполне хорошее, и я предполагаю его оставить именно для понятия "нестрогий инвариант ", но это не то, что я хотел назвать "нечетким инвариантом ".
Хотел я вот чего.

Определение: когда группу преобразований G, действующей на входе х, можно называть нечетким инвариантом для функции f(x).

Пусть для каждого g из G определено abs(g) - некоторое вещественное число.

Пусть также для любых g1,g2 из G,
abs(g1*g2) <= abs(g1) + abs(g2),
и пусть abs(id) = 0, где id - тождественное преобразование.

abs(g) можно понимать как "степень искажения " преобразования g.

Теперь определим, что такое функция гладкости для группы G и функции f.
Smoothness(f,G,delta) = sup|f(x) - f(g(x))|,
где супремум берется по всем возможным входам х и по всем g таким, что
abs(g) < delta.

Это понятие обобщает понятие "непрерывность функции ".
Дело в том, что если G - группа всех возможных преобразований входа, а abs(g) = sup( |g(x)-x| ), то "обычная " непрерывность функции f запишется как
Smoothness(f,G,0+) = 0. Причем функция f визуально будет тем более гладкой, чем быстрее Smoothness стремится к нулю при delta - > 0.

Теперь уже для произвольной G, если Smoothness(f,G,0+) = 0, будем называть G нечетким инвариантом для f. Чем быстрее Smoothness стремится к нулю, тем меньше эта "нечеткость ". Если Smoothness=0 тождественно, то G - обычный, строгий инвариант для f.

Комментариев нет:

Отправить комментарий