Для использованного подхода к обучению, мы добивались, чтобы для любой запомненной последовательности R(t) выполнялось условие:
R(t+1) = F( W R(t) + W1 R(t-1) + W2 R(t-2) +… + Wn R(t-n) ) — это дает нам набор уравнений на искомые матрицы, для которых можно найти решение (мы использовали псевдоинверсный алгоритм с одним трюком для упрощения представления этого дела, но в принципе методы могут быть самыми разными)
Первое можно сделать уже сейчас на куда более простых сетях (или не сетях, а генетических алгоритмах) — но толку пока немного…
А вот вау-эффекты нередко связаны либо с предельно заточенной технологией, когда люди думают «это ж что можно из такого собрать!!!» — в то время как на самом деле видят предел возможностей, либо с очень плохим пониманием сути, когда думают «это что ж можно из такого собрать!!!» — в то время как на самом деле это нечто абсолютно другое :)
Немного не так: я считаю, что люди должны развиваться путем достройки своего мозга электроникой. В отдаленной перспективе это приведет к отказу от тел, и можно будет сказать, что миром правит в некотором роде ИИ. Но детали процесса создания этого искусственного интеллекта крайне важны :) Одно дело если вы создали электронного водителя, который сам решает куда вам надо ехать, а куда не надо — и совсем другое, если он быстрее и безопаснее чем вы сами довезет вас туда, куда вы хотите :)
Затрудняюсь прямо сейчас нарисовать картинку, может будет понятной формула?
Пусть S(t) — вектор текущих выходов сети, S(t-1) — на такт назад, и т.д.
Тогда состояние сети на следующем шаге в классической сети Хопфилда вычисляется как:
S(t+1) = F( W S(t) ), где W — матрица весов, F — активационная функция
В нашей сети оно вычисляется (опустив члены, связанные со внешними входами) так:
S(t+1) = F( W S(t) + W1 S(t-1) + W2 S(t-2) +… + Wn S(t-n) ), где матрицы W, W1...Wn — разные
ИМХО, на сегодня возможности цивилизации примерно равны возможностям индивидуума (разумеется с поправкой на то, что цивилизация развивается во всех направлениях одновременно, а индивидуум вынужден выбирать область специализации). Хотя изменить это было бы интересно, но тогда неизбежно возникает ряд сложных вопросов, на которые у меня нет ответов.
Возможности сильного ИИ ограничивать скорее всего не придется — хотя сценарий, когда их нужно ограничить на небольшое время, чтобы смягчить влияние ИИ на человечество, возможен. А вот сценарий, когда их действительно необходимо ограничить на длительное время, мне в голову не приходит (то есть желание такое понятно, но как по мне — можно найти варианты лучше).
Конечно, сны — это довольно отдаленная аналогия, и возможно неверная — но также возможно, что сон человека является эффектом как раз такого типа, только не на такой отдельной сети, как наша модель, а на ансамбле из множества таких сетей, или даже на ансамбле из каких-то структур из таких сетей.
Спасибо :)
В идеале да — чтобы сеть сама выделила определенные образы, и реагировала на них. Но в целом тут есть ряд вопросов как к процессу обучения сети, так и к промежуточным задачам — понятно что задачу-максимум сходу не решить, а вот какую можно было бы поставить задачу с одной стороны проще, но с другой — уже достаточно сложную, чтобы в процессе ее решения доработать модель сети?
Ну как — в качестве намека на доказательную базу можно сослаться на статью Innate neural assemblies for Lego memory от проекта Blue Brain, и другие их исследования, где они показывают что нейронные структуры коры мозга напоминают обсуждаемую модель (особенно ту ее модификацию, над которой мы сейчас работаем — увы, она еще не готова к публикации) — но конечно это далеко не строго и довольно спекулятивно, мне нечего возразить.
А вот дискуссия тут как раз вполне уместна: у нас есть структуры, которые по-отдельности ведут себя похоже на отдельные структуры мозга. Можно их объединить. Вопрос — как понять, во что их объединять, какие задачи ставить перед таким объединением, и какие выводы можно делать из результатов решения этих задач?
Ну как посмотреть… Ни рекуррентный перцептрон, ни сеть Хопфилда, ни любая другая известная мне рекуррентная сеть не обладает подобной динамикой. То есть безусловно такая динамика — следствие рекуррентности, но далеко не все, что рекуррентно, ведет себя так.
Не могу согласиться, перцептрон вполне внятно объясняется за полчаса.
Другое дело что процесс получения именно знаний, а не простых рецептов, мало кого привлекает — но заинтересованному человеку это объяснить очень легко.
А почему нет? Китайская комната содержит понимание. Только оно не у оператора комнаты, а является функцией книги с промежуточными записями. Так же как и у человека понимание — функция состояния связей в мозгу, но ни один нейрон, ни одна связь не обладают по-отдельности «квантом понимания».
>и затем ждать когда обучение сойдется с коэф. ошибки 0
Не нужно этого ждать, т.к. этого не произойдет. Среди всех возможных образов будет масса представителей белого шума — которые (все одновременно) без потерь сжать невозможно в принципе.
Нейронная сеть такой архитектуры НЕ обеспечивает сжатие без потерь. Это раз.
Два — нейронная сеть такой архитектуры не факт что вообще дает какое-либо сжатие: требование к точности сигнала в «горлышке» существенно повышается — и если мы кодируем бинарные данные на входе, то при попытке заменить сигналы нейронов в горлышке на бинарные, все сжатие исчезнет.
Подобная архитектура может быть полезна только в одном случае: если нужно передавать данные определенного типа, с некоторыми внутренними зависимостями, которые лень анализировать серьезно. Тогда примененная «в лоб» нейросеть эти зависимости выловит, и сможет использовать для сжатия (с потерями). Но как только мы попытаемся сжать такой системой данные другого типа — то получим на выходе нечто, весьма слабо напоминающее исходный результат.
Хм… В целом ясно, и это было бы круто. Но не очень понятно, кому может понадобиться таким пользоваться, для чего? Понимаю что вопрос в некотором роде глупый, скорее всего, когда подобная система получит широкое распространение, недоумение будет вызывать то, что кому-то было неочвидна ценность такой штуки :) Но все же. Я пока не вижу, что могло бы побудить лично меня что-то отмечать на каких-то картинках в инете. Хотя наверняка такие мотивы есть в избытке — но хотелось бы понять их сейчас, а не постфактум :)
>Я почему-то думаю, что тут суть построить правильное дере вывода по всем этим метрикам. Правильно сегментировать каждое из измерений.
Это да, весьма нетривиальная задача. Объединить разные метрики, особенно более чем две, во что-то внятное — большой кусок работы, с плохо прогнозируемыми результатами.
Ну как — начальный поиск у гугла — сифтоподобный, т.к. именно что цветокоррекцию он игнорирует, обрезание игнорирует, а изменение пропорций его убивает. А вторичный — цветоориентированный, в чем легко убедиться, скармливая ему разные неизвестные картинки. Может, правда, еще есть детекция лиц — этот момент я не проверял.
>иначе любой бы мог воспроизвести этот поиск на равне
Вообще-то примерно так оно и есть :) По крайней мере результаты упомянутого чуть ниже Piximilar, ИМХО, ничуть не хуже — если не лучше. Да и наша система (прямо сейчас на нее посмотреть еще нельзя, но очень скоро она появится на одном крупном фотохранилище) вроде не особо хуже.
Другой вопрос, что Гугл будет свой поиск развивать. Думаю, через пару лет он существенно улучшится.
>А некоторые системы (например распознавание человека) работают только на анализе гистограммы градиентов
Понятно, что в границах потенциально лежит много информации. Но достать ее оттуда — отдельная, весьма сложная задача, и сказать что система «основана на выделении границ», если у нее начальной ступенью обработки является выделение границ, а потом над этим результатом работает еще десяток нетривиальных алгоритмов — ну… Не то чтобы нельзя, но — странно :)
Хотя если набор границ с минимальной обработкой, поданный на тривиальный классификатор типа нейронных сетей, дает возможность эффективно детектировать человека — то я, пожалуй, неправ. Только я не слышал о таких системах — те, о которых слышал, работали весьма «через раз».
>Посмотрите, например метод «Integrated Region Matching». Там очень хорошие результаты, основанные в основном на анализе текстур
Все же не совсем так. Эта техника очень зависит от того, насколько хорошо нам удастся сопоставить характеристики одного региона с другим. И хотя при сопоставлении двух регионов текстура, конечно, является куда более важной характеристикой, чем при сопоставлении разных изображений «в лоб», но если ее не дополнить другими — в частности, тем же цветом — то результаты в рамках задачи «отсортировать базу изображений по подобию на заданное» будут явно не лучшими. Хотя в целом согласен, я текстуры слишком поверхностно оценил.
>Да, котенка не найдет, а вот здание, например, найдет с разных ракурсов.
Наверное, я недостаточно внятно сформулировал, в каком аспекте я рассматриваю все методы. А рассматриваю я их в контексте системы, которая в ответ на заданное изображение даст набор визуально похожих. При этом одно и то же здание с разных ракурсов в разных освещениях может быть визуально куда менее похожим на себя же, чем фотографии других зданий в том же ракурсе и том же освещении.
>В ч/б изображении содержится 90% информации об изображении
Я, разумеется, имел в виду значимость цвета для поиска по цветным изображениям.
А с ч/б все куда печальнее на сегодня: при попытке найти визуально похожие на заданную ч/б картинку вывод того же гугла визуально не очень-то отличается от случайной выборки всех ч/б изображений подряд.
>Да гугл, может и ищет по цвету, но только после того как не смог найти по другим признакам
Поэкспериментируйте немного с поиском гугла — и убедитесь, что цвет является ключевым фактором, если для изображения не удалось найти похожее в базе, которое могло бы дать метаинформацию.
>Я понимаю, тех, кто только начинает разработку подобных систем, привлекает спектрограмма своей простотой. Но в дальнейшеам оказывается, что это тупиковый путь.
Ну как… Простота — да, у меня на все, связанное с непосредственно поиском по цветам, ушло два месяца, остальные 4, пока разрабатывалась веб-обвязка к ядру, я сидел и занимался разными другими интересными вещами, иногда подправляя мелочи :) Но среди этих «интересных вещей» была масса усилий, которые я потратил на анализ формы, на вопросы кодирования топологических признаков и поиска по ним (просто такая задача не входила в данный проект — но для себя я сделал немало). И я не могу сказать, что сегодня есть какая-то удовлетворительная техника для работы с формой — все работает очень «через раз», и, что самое неприятное, эффективно объединить результаты разных методов — весьма нетривиальная задача, действительно хорошего решения которой я ни сам не нашел, ни в других работах не увидел. Именно поэтому я так подчеркнул цвет — это единственное, что сегодня анализируется действительно хорошо. Остальное — только в отдельных специфических задчах.
>Некторые методы вообще не рассмотрены. Например, вейвлетные (фильтры Хаара и т.п.). А ведь для распознавания лиц, от того же гугла, работает только с помощью этих методов.
В принципе да, стоило их упомянуть. Но у меня есть серьезные сомнения в их эффективности в контексте данной задачи — по крайней мере я не вижу, почем это могло бы хорошо работать, и поиск от retrievr, который базируется на вейвлетах, крайне слаб.
>Our multicolour search algorithms utilize a colour space that is based on the human perception of colour
Ага, это пространство Lab. Очень рекомендую его использовать, кстати, там конечно толковая формула для цветового расстояния такая мудреная, что на ее отладку уйдет неделя, если не две (баги просто неизбежны, слишком много интуитивно-неочевидных вычислений), но результат того стоит — я проверял :)
Вообще подход у Piximilar безусловно более интересный, чем у TinEye. И результаты у них хорошие.
Ок, я неудачно выразился. Под этой базой я имел в виду те картинки, метаинформация к которым позволяет сделать однозначные выводы о том, что там изображено. Это справедливо для небольшого процента изображений, и если поиск дает совпадение с одним из них — то логика выдачи результатов принципиальным образом отличается от логики выдачи результатов в другом случае.
С удовольствием почитаю развернутый комментарий — потому как довольно многие вещи сделать можно относительно легко, но лично мне совершенно неясно, насколько это актуально. Какого рода функциональность могла бы быть нужна подобной системе?
R(t+1) = F( W R(t) + W1 R(t-1) + W2 R(t-2) +… + Wn R(t-n) ) — это дает нам набор уравнений на искомые матрицы, для которых можно найти решение (мы использовали псевдоинверсный алгоритм с одним трюком для упрощения представления этого дела, но в принципе методы могут быть самыми разными)
А вот вау-эффекты нередко связаны либо с предельно заточенной технологией, когда люди думают «это ж что можно из такого собрать!!!» — в то время как на самом деле видят предел возможностей, либо с очень плохим пониманием сути, когда думают «это что ж можно из такого собрать!!!» — в то время как на самом деле это нечто абсолютно другое :)
Пусть S(t) — вектор текущих выходов сети, S(t-1) — на такт назад, и т.д.
Тогда состояние сети на следующем шаге в классической сети Хопфилда вычисляется как:
S(t+1) = F( W S(t) ), где W — матрица весов, F — активационная функция
В нашей сети оно вычисляется (опустив члены, связанные со внешними входами) так:
S(t+1) = F( W S(t) + W1 S(t-1) + W2 S(t-2) +… + Wn S(t-n) ), где матрицы W, W1...Wn — разные
Возможности сильного ИИ ограничивать скорее всего не придется — хотя сценарий, когда их нужно ограничить на небольшое время, чтобы смягчить влияние ИИ на человечество, возможен. А вот сценарий, когда их действительно необходимо ограничить на длительное время, мне в голову не приходит (то есть желание такое понятно, но как по мне — можно найти варианты лучше).
В идеале да — чтобы сеть сама выделила определенные образы, и реагировала на них. Но в целом тут есть ряд вопросов как к процессу обучения сети, так и к промежуточным задачам — понятно что задачу-максимум сходу не решить, а вот какую можно было бы поставить задачу с одной стороны проще, но с другой — уже достаточно сложную, чтобы в процессе ее решения доработать модель сети?
А вот дискуссия тут как раз вполне уместна: у нас есть структуры, которые по-отдельности ведут себя похоже на отдельные структуры мозга. Можно их объединить. Вопрос — как понять, во что их объединять, какие задачи ставить перед таким объединением, и какие выводы можно делать из результатов решения этих задач?
Другое дело что процесс получения именно знаний, а не простых рецептов, мало кого привлекает — но заинтересованному человеку это объяснить очень легко.
Не нужно этого ждать, т.к. этого не произойдет. Среди всех возможных образов будет масса представителей белого шума — которые (все одновременно) без потерь сжать невозможно в принципе.
Два — нейронная сеть такой архитектуры не факт что вообще дает какое-либо сжатие: требование к точности сигнала в «горлышке» существенно повышается — и если мы кодируем бинарные данные на входе, то при попытке заменить сигналы нейронов в горлышке на бинарные, все сжатие исчезнет.
Подобная архитектура может быть полезна только в одном случае: если нужно передавать данные определенного типа, с некоторыми внутренними зависимостями, которые лень анализировать серьезно. Тогда примененная «в лоб» нейросеть эти зависимости выловит, и сможет использовать для сжатия (с потерями). Но как только мы попытаемся сжать такой системой данные другого типа — то получим на выходе нечто, весьма слабо напоминающее исходный результат.
Это да, весьма нетривиальная задача. Объединить разные метрики, особенно более чем две, во что-то внятное — большой кусок работы, с плохо прогнозируемыми результатами.
Ну как — начальный поиск у гугла — сифтоподобный, т.к. именно что цветокоррекцию он игнорирует, обрезание игнорирует, а изменение пропорций его убивает. А вторичный — цветоориентированный, в чем легко убедиться, скармливая ему разные неизвестные картинки. Может, правда, еще есть детекция лиц — этот момент я не проверял.
>иначе любой бы мог воспроизвести этот поиск на равне
Вообще-то примерно так оно и есть :) По крайней мере результаты упомянутого чуть ниже Piximilar, ИМХО, ничуть не хуже — если не лучше. Да и наша система (прямо сейчас на нее посмотреть еще нельзя, но очень скоро она появится на одном крупном фотохранилище) вроде не особо хуже.
Другой вопрос, что Гугл будет свой поиск развивать. Думаю, через пару лет он существенно улучшится.
Понятно, что в границах потенциально лежит много информации. Но достать ее оттуда — отдельная, весьма сложная задача, и сказать что система «основана на выделении границ», если у нее начальной ступенью обработки является выделение границ, а потом над этим результатом работает еще десяток нетривиальных алгоритмов — ну… Не то чтобы нельзя, но — странно :)
Хотя если набор границ с минимальной обработкой, поданный на тривиальный классификатор типа нейронных сетей, дает возможность эффективно детектировать человека — то я, пожалуй, неправ. Только я не слышал о таких системах — те, о которых слышал, работали весьма «через раз».
>Посмотрите, например метод «Integrated Region Matching». Там очень хорошие результаты, основанные в основном на анализе текстур
Все же не совсем так. Эта техника очень зависит от того, насколько хорошо нам удастся сопоставить характеристики одного региона с другим. И хотя при сопоставлении двух регионов текстура, конечно, является куда более важной характеристикой, чем при сопоставлении разных изображений «в лоб», но если ее не дополнить другими — в частности, тем же цветом — то результаты в рамках задачи «отсортировать базу изображений по подобию на заданное» будут явно не лучшими. Хотя в целом согласен, я текстуры слишком поверхностно оценил.
>Да, котенка не найдет, а вот здание, например, найдет с разных ракурсов.
Наверное, я недостаточно внятно сформулировал, в каком аспекте я рассматриваю все методы. А рассматриваю я их в контексте системы, которая в ответ на заданное изображение даст набор визуально похожих. При этом одно и то же здание с разных ракурсов в разных освещениях может быть визуально куда менее похожим на себя же, чем фотографии других зданий в том же ракурсе и том же освещении.
>В ч/б изображении содержится 90% информации об изображении
Я, разумеется, имел в виду значимость цвета для поиска по цветным изображениям.
А с ч/б все куда печальнее на сегодня: при попытке найти визуально похожие на заданную ч/б картинку вывод того же гугла визуально не очень-то отличается от случайной выборки всех ч/б изображений подряд.
>Да гугл, может и ищет по цвету, но только после того как не смог найти по другим признакам
Поэкспериментируйте немного с поиском гугла — и убедитесь, что цвет является ключевым фактором, если для изображения не удалось найти похожее в базе, которое могло бы дать метаинформацию.
>Я понимаю, тех, кто только начинает разработку подобных систем, привлекает спектрограмма своей простотой. Но в дальнейшеам оказывается, что это тупиковый путь.
Ну как… Простота — да, у меня на все, связанное с непосредственно поиском по цветам, ушло два месяца, остальные 4, пока разрабатывалась веб-обвязка к ядру, я сидел и занимался разными другими интересными вещами, иногда подправляя мелочи :) Но среди этих «интересных вещей» была масса усилий, которые я потратил на анализ формы, на вопросы кодирования топологических признаков и поиска по ним (просто такая задача не входила в данный проект — но для себя я сделал немало). И я не могу сказать, что сегодня есть какая-то удовлетворительная техника для работы с формой — все работает очень «через раз», и, что самое неприятное, эффективно объединить результаты разных методов — весьма нетривиальная задача, действительно хорошего решения которой я ни сам не нашел, ни в других работах не увидел. Именно поэтому я так подчеркнул цвет — это единственное, что сегодня анализируется действительно хорошо. Остальное — только в отдельных специфических задчах.
>Некторые методы вообще не рассмотрены. Например, вейвлетные (фильтры Хаара и т.п.). А ведь для распознавания лиц, от того же гугла, работает только с помощью этих методов.
В принципе да, стоило их упомянуть. Но у меня есть серьезные сомнения в их эффективности в контексте данной задачи — по крайней мере я не вижу, почем это могло бы хорошо работать, и поиск от retrievr, который базируется на вейвлетах, крайне слаб.
Ага, это пространство Lab. Очень рекомендую его использовать, кстати, там конечно толковая формула для цветового расстояния такая мудреная, что на ее отладку уйдет неделя, если не две (баги просто неизбежны, слишком много интуитивно-неочевидных вычислений), но результат того стоит — я проверял :)
Вообще подход у Piximilar безусловно более интересный, чем у TinEye. И результаты у них хорошие.