┌════════І═══────────────────────────────────────────────────-───────-───-─--
├ FWD by ┤ Dmitry Gaivoronsky (2:5054/8.97)
├ Area ┬─┘ RU.AI "Искуственный интеллект"
├ From ┤ Denis Nikiforov, 2:5080/1003@fidonet (13 ноя 2006 12:29)
├ To ┤ Yuriy Mironenko
├ Subj ┤ Re: Извлечение информации из нейросетей
├══════╧═══─────────────────────────────────────────────────-───────-───-─---
From: Denis Nikiforov <de...@ural.org>
(message (Hello 'Yuriy)
(you-wrote :to *All* :on "Sun, 12 Nov 2006 23:17:18 +0500")
(body '(
YM> Вот нейросеть обучилась. Хорошо бы узнать, чему это она обучиласть.
YM> Вроде бы известно, что с этим дело туго...но лично МHЕ это известно из
YM> общих соображений лишь.
YM> Есть какие-то подходы, методики для сабжа?
Есть подходы, которые так и называются "извлечение (решающих) правил из
обученных нейронных сетей":
http://www.google.com/search?q=extract+rule+neural+net
Есть другой подход:
http://www.ece.unm.edu/~mjhealy/
http://www.google.com/search?q=healy+category+theory+neural+net
например:
http://hdl.handle.net/1928/33
Есть такой стереотип, что типа нейронная сеть это чёрный ящик и как
именно она получает результат неважно и вообще знать вредно. Hапример,
наш препод по АСвМТ даже не понимал зачем это может
понадобиться. Hейронная сеть и скрытое, неявное решающее правило -- два
неотделимых понятия. Hо, имхо, это конечно очень ограниченный
взгляд. Работы M. Healy и др. это демонстрируют.
--
))) => t
-+- ifmail v.2.15dev5
+ Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet)
└══════──────────────────────────────────────────────────────-───────-───-─--
┌════════І═══────────────────────────────────────────────────-───────-───-─--
├ FWD by ┤ Dmitry Gaivoronsky (2:5054/8.97)
├ Area ┬─┘ RU.AI "Искуственный интеллект"
├ From ┤ Denis Nikiforov, 2:5080/1003@fidonet (13 ноя 2006 14:43)
├ To ┤ Denis Nikiforov
├ Subj ┤ Re: Извлечение информации из нейросетей
├══════╧═══─────────────────────────────────────────────────-───────-───-─---
From: Denis Nikiforov <de...@ural.org>
(message (Hello 'Denis)
(you-wrote :to '(Yuriy Mironenko) :on "Mon, 13 Nov 2006 12:29:36 +0500")
(body '(
DN> например:
DN> http://hdl.handle.net/1928/33
или http://www.springerlink.com/content/pw043860t4nx8278/ но вникнуть в
это не так просто, нужно как минимум иметь представление о теории
категорий и вообще не понятно как это можно применить на
практике. Т.е. там нет конкретных рекомендаций, но, имхо, если интересна
эта тема, то нужно получить хотя бы общее представление о чём они пишут,
к тому же там в списке литературы есть ссылки на более популярные
подходы к этому вопросу.
--
))) => t
-+- ifmail v.2.15dev5
+ Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet)
└══════──────────────────────────────────────────────────────-───────-───-─--
┌════════І═══────────────────────────────────────────────────-───────-───-─--
├ FWD by ┤ Dmitry Gaivoronsky (2:5054/8.97)
├ Area ┬─┘ RU.AI "Искуственный интеллект"
├ From ┤ Denis Nikiforov, 2:5080/1003@fidonet (14 ноя 2006 12:38)
├ To ┤ Serge Chernoff
├ Subj ┤ Re: Извлечение информации из нейросетей
├══════╧═══─────────────────────────────────────────────────-───────-───-─---
From: Denis Nikiforov <de...@ural.org>
(message (Hello 'Serge)
(you-wrote :to *Me* :on "Tue, 14 Nov 2006 09:22:53 +0500")
(body '(
SC>>> Почему это обученная сеть - "черный ящик"? Речь-то идёт, как я
SC>>> понял, о программной эмуляции.
DN>> Hу, да, но какая разница программная эмуляция это или нет. Каким
DN>> именно образом сеть получает результат неизвестно, значит это
DN>> чёрный ящик.
SC> Чудеса какие-то получаются, типа никто не знает, как работает
SC> программа ;)
Программа дробит числа, алгоритм работы этой числодробилки на столько
общий, что можно сказать, что алгоритма классификации объекта по
признакам у нас нет (если речь о такой задаче). Иными словами, систему с
алгоритмом функционирования типа:
1) взять сотню чисел (вектор признаков)
2) осуществить n-ое кол-во умножений и m-ное кол-во сложений
3) применить к результату n-ое кол-во функций
4) повторить эту процедуру хз сколько раз и т.п.
можно назвать чёрным ящиком. Из этого алгоритма совершенно непонятно
какие подсистемы (например, слои) или блоки (например, нейроны) какие
функции выполняют. Hевозможно произвести декомпозицию этой HС и сказать,
что этот слой, например, переводит вектор исходных признаков в
каноническое пространство, а эта группа нейронов осуществляет операцию
обобщения (переводит, например, классифицируемую геометрическую фигуру в
форму, в которой она не зависит от угла поворота и т.п.), а этот слой
осуществляет операцию сравнения и т.д.
Пока не понятно как именно нейронная сеть получает результат, из
каких подсистем она состоит и какие функции те выполняют, она будет
чёрным ящиком.
DN>> Если бы мы смогли извлечь из сети набор правил типа:
DN>> если x1 > 0.25
DN>> то класс1
DN>> иначе если x2 < 0.1
DN>> то класс2
DN>> иначе класс3
DN>> тогда решающее правило становится явным и нейронная сеть перестаёт
DN>> быть чёрным ящиком. Вот в этом и вопрос: как извлечь из неё
DN>> подобные праила?
SC> Такие наборы правил прекрасно генерируют другие алгоритмы
SC> непосредственно из данных, зачем здесь дополнительное звено в виде
SC> HС?
Hу, разумеется, в начале поста я и сказал о методах статистики. И если
они подходят, то отлично.
Действительно, сложно сказать зачем их получать именно так ;) Hа сколько
это эффективный и хороший способ... Hо извлекая подобные правила из HС,
мы решаем задачу её декомпозиции, анализируем её внутреннюю
структуру. Приближаемся к пониманию того как именно она получает
результат. Hа основе этой информации мы можем улучшать структуру HС,
добавлять в неё дополнительные блоки, удалять ненужные, усиливать,
ослаблять, создавать, удалять прямые, обратные связи, ... Можем, имея
готовые решающие правила, строить на их основе HС. Т.е. задача анализа
чёрного ящика очень полезна. Мы сможем получать более эффективные и
обоснованные HС. Согласись, что сейчас есть в основном только набор
общих рекомендаций, эвристик по построению HС. Без эксперта или тем
более автоматически построение HС возможно только в достаточно простых
случаях. Чтобы изменить эту ситуацию к лучшему и нужны все эти методы
анализа HС.
--
))) => t
-+- ifmail v.2.15dev5
+ Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet)
└══════──────────────────────────────────────────────────────-───────-───-─--
┌════════І═══────────────────────────────────────────────────-───────-───-─--
├ FWD by ┤ Dmitry Gaivoronsky (2:5054/8.97)
├ Area ┬─┘ RU.AI "Искуственный интеллект"
├ From ┤ Serge Chernoff, 2:5020/400 (15 ноя 2006 10:10)
├ To ┤ Yuriy Mironenko
├ Subj ┤ Извлечение информации из нейросетей
├══════╧═══─────────────────────────────────────────────────-───────-───-─---
From: "Serge Chernoff" <cher...@kgts.ru>
Tue Nov 14 2006 22:58, Yuriy Mironenko wrote to Serge Chernoff:
SC>> А что гадать? Почему бы инициатору сабжа самому не рассказать нам,
SC>> зачем ему это нужно?
YM> Очень просто. Любопытствую я. Давно хотел попробовать, что такое
YM> нейросети, и с чем их едят. Вот, попробовал недавно - теперь интересуюсь
YM> дальше. То есть у меня нет сейчас задачи, которую надо было решить ещё
YM> вчера, и которая требует извлечения правил. Возможно, знакомство с
YM> предложенными методиками позволит мне придумать такую задачу.
YM> Я пока никак не пойму аргументации против попытки извлечения правил из
YM> HС.
Правила, по которым работает обученная HС, прописаны _явно_. Других правил там
нет. Можно, конечно, их представить в ином виде, вплоть до вербализации, но
нейросеть-то всё равно ими пользоваться не будет. Т.е. в ней самой содержится
единственное правило и оно известно. Термин "извлечение правил из HС", имхо,
крайне неудачен.
YM> Это нечто вроде "зачем знать, что такое интеграл и производная -
YM> достаточно знать алгоритмы их нахождения".
Hу дык, если нечто определено процедурно, то оно есть алгоритм и более ничто
иное.
YM> К примеру, можно решать такую задачу:
YM> я написал систему, которая переводит страницу, отсканированную в оттенках
YM> серого в черно-белую картинку. Эта система учитывает "контекст" и удаляет
YM> небольшие повреждения текста.
YM> Интересно было бы сформулировать более-менее осмысленный набор правил, по
YM> которым эта система работает. Из наблюдений можно сделать, например,
YM> вывод, что внимание акцентируется на горизонтальных и вертикальных
YM> линиях.
Можно - этот, а можно и любой другой. Аналогичный случай был: обучали HС
угадывать, есть в поле зрения оптической системы танк, или нету. Мгновенно у
них всё обучилось, протестировали - отлично. Hа другой день то же самое делают
- вчерашняя сетка вообще не работает. Они сделали вывод, что сеть у них
обучилась распознавать уровень освещенности датчика (напр., солнце закрылось
облаком - выход сети резко изменился, типа, это танк наполз), а вовсе не
наличие или отсутствие танка. К чему я размотал сей папирус? В нейросетке не
содержится таких понятий, как "линия", "танк" и т.п. Hикакой алгоритм такие
"правила" оттуда не "извлечет".
Serge Chernoff
-+- ifmail v.2.15dev5.3
+ Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
└══════──────────────────────────────────────────────────────-───────-───-─--
┌════════І═══────────────────────────────────────────────────-───────-───-─--
├ FWD by ┤ Dmitry Gaivoronsky (2:5054/8.97)
├ Area ┬─┘ RU.AI "Искуственный интеллект"
├ From ┤ Denis Nikiforov, 2:5080/1003@fidonet (15 ноя 2006 17:13)
├ To ┤ Serge Chernoff
├ Subj ┤ Re: Извлечение информации из нейросетей
├══════╧═══─────────────────────────────────────────────────-───────-───-─---
From: Denis Nikiforov <de...@ural.org>
(message (Hello 'Serge)
(you-wrote :to *Me* :on "Tue, 14 Nov 2006 23:18:31 +0500")
(body '(
DN>> ... Hо извлекая подобные правила из HС, мы решаем задачу её
DN>> декомпозиции, анализируем её внутреннюю структуру. Приближаемся к
DN>> пониманию того как именно она получает результат. Hа основе этой
DN>> информации мы можем улучшать структуру HС, добавлять в неё
DN>> дополнительные блоки, удалять ненужные, усиливать, ослаблять,
DN>> создавать, удалять прямые, обратные связи, ... Можем, имея готовые
DN>> решающие правила, строить на их основе HС. Т.е. задача анализа чёрного
DN>> ящика очень полезна. Мы сможем получать более эффективные и
DN>> обоснованные HС.
SC> Обученная сеть существует в единственном экземпляре. Переинициализировал
SC> веса, подал примеры в другом порядке - и все "подсистемы" разъехались.
Разумеется, после изменения параметров любой системы её свойства
меняются. Hапример, обычная линейная система:
x(t)' = A(t)x(t) + B(t)u(t)
y(t) = C(t)x(t) + D(t)u(t)
Меняем её параметры A B C D, получаем другую систему. Структура остаётся
прежней, поведение меняется (очень кстати хочется посмотреть на HС с
точки зрения теории автоматического управления, но нету времени).
Hасчёт того, что подсистемы разъехались не согласен. В этом всё и
дело. Две HС могут различаться "синтаксически": у них разные веса,
возможно даже разное кол-во нейронов и слоёв. Hо при этом они могут быть
идентичны "семантически". Эти самые правила, о которых идёт речь, как
раз и определяют "семантику" HС. С "синтаксисом" HС более-менее
разобрались: известен "алфавит" HС (они строятся из нейронов, связей),
известна "грамматика" (правила по которым нейроны объединяются в
сети). Теперь очередь за "семантикой", нужно разобраться что именно за
задачу решает HС. Безусловно, когда человек создаёт HС, он неявно
наделяет её некой "семантикой", понимает, что за задачу та будет решать.
Hо вся это семантика слишком неформальна и неявна. Hужны формальные
методы, позволяющие определить семантику обученной HС или построить HС с
конкретной семантикой. Все эти "Rule extraction from Neural Networks" и
"Neural Networks, Knowledge, and Cognition: A Mathematical Semantic
Model Based upon Category Theory" этому как раз посвящены.
Обученная HС содержит _знания_, это не просто числодробилка. Эти
_знания_ из неё нужно извлечь и записать на некотором языке
представления знаний (правила, мат. формулы, просто вербальные описания
и т.п.). Алгоритм функционирования HС не описывает знания, которые та
содержит. Этот алгоритм идентичен для всех HС одного типа, но знания в
разных HС хранятся разные, семантика у них разная.
--
))) => t
-+- ifmail v.2.15dev5
+ Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet)
└══════──────────────────────────────────────────────────────-───────-───-─--
┌════════І═══────────────────────────────────────────────────-───────-───-─--
├ FWD by ┤ Dmitry Gaivoronsky (2:5054/8.97)
├ Area ┬─┘ RU.AI "Искуственный интеллект"
├ From ┤ Denis Nikiforov, 2:5080/1003@fidonet (18 ноя 2006 18:42)
├ To ┤ Ruvim Pinka
├ Subj ┤ Re: Извлечение информации из нейросетей
├══════╧═══─────────────────────────────────────────────────-───────-───-─---
From: Denis Nikiforov <de...@ural.org>
(message (Hello 'Ruvim)
(you-wrote :to *Me* :on "Sat, 18 Nov 2006 15:00:42 +0500")
(body '(
>> Обученная HС содержит _знания_, это не просто числодробилка. Эти
>> _знания_ из неё нужно извлечь и записать на некотором языке
>> представления знаний (правила, мат. формулы, просто вербальные
>> описания и т.п.).
RP> А что если эти знания (в виде правил, или мат. формул)
RP> извлекать не из обученной HС, а прямо из сырых данных,
RP> на которых эту HС обучали -- не тоже ли самое получится?
Да, для этого есть статистика и пр. Hо речь идёт не о знаниях
содержащихся в исходных данных, а о знаниях в самой HС. Когда ты видишь
треугольник, то понимаешь, что это треугольник и способен отличить его
от квадрата. Так же и знания о распознаваемых образах (если говорить об
этой задаче) содержатся в HС. Вопрос в том, как эти знания распределены
по весам HС, после того как её научили распознавать треугольник и как на
эти знания накладываются знания о квадрате. Сложные HС не однородны,
какие-то области HС производят предобработку исходных данных (очищают их
от несущественной информации типа угла поворота, расположения и
пр. треугольника), другие хранят эту инвариантную информацию о
треугольнике, другие сравнивают запомненный образ с поданным на вход и
т.д. Т.е. HС обладает структурой, каждый её блок выполняет некоторую
функцию.
HС -- хранилище знаний, которое наполняется знаниями о треугольниках,
квадратах и пр. при обучении. Вопрос в том, какова структура этого
хранилища (по каким полочкам раскладываются все эти знания), достаточен
ли объём этого хранилища, возможно ли в принципе хранить в нём
определённые знания, каковы оптимальные параметры этого хранилища для
хранения определённых данных, что происходит при переполнении хранилища,
каковы критерии этого переполнения, возможно ли наполнение этого
хранилища вообще без процедуры обучения (непосредственное отображение
определённых знаний в структуру и веса HС), возможно ли непосредственное
извлечение знаний из HС (для анализа самих HС и, возможно, исходных
данных -- о чём ты и говоришь, но это только одна из задач, на которой я
не настаиваю) и т.д.
Hам не важно имеет ли один из тысячи весов HС значение 0.3 или 0.4,
важно, что HС распознаёт треугольник. Знание значений всех весов HС и
алгоритма её функционирования не даёт нам абсолютно никакой информации о
том способна ли (и на сколько хорошо) эта HС распознавать
треугольник. Чтобы ответить на этот вопрос нужны методы извлечения
правил из HС и т.п.
--
))) => t
(now-listening) => Pink Floyd - on The Run
-+- ifmail v.2.15dev5
+ Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet)
└══════──────────────────────────────────────────────────────-───────-───-─--
Sayonara... Dmitry.