1

Я пытаюсь построить блок искусственного интеллекта. Я планирую сделать это, сначала собрав сенсорный ввод («наблюдения») в кратковременный список рабочей памяти, постоянно формируя шаблоны, найденные в этом списке («идеи»), и передавая эти идеи в долговременную память, когда они достигают значительных размеров, возможно, семикратных наблюдений. Для любого философа, похожего на статью Локка Эссе о человеческом понимании, но это не будет Tabula Rasa. Нужно, и Господь желает, быть закодированной базовой структурой.Алгоритм интеллектуального анализа данных для динамической консолидации повторяющихся подстрок?

Таким образом, вопрос:

Есть/где хороший алгоритм динамического консолидации или «образец-Изинга» крупнейших подстроки этой постоянно растущей последовательности наблюдений? Например: если мне до сих пор дано ABCDABCABC, я хочу идею ABC, D и две другие идеи ABC; то, если другой D наблюдается и добавляется в кратковременную память, мне нужен токен ABCD, токен ABC и еще один токен ABCD. Я не хочу использовать Shortest Common Substring, потому что мне нужно будет повторно запустить его после произвольного количества дополнений символов. Думаю, я предпочел бы какую-нибудь легко доступную для поиска/модифицируемую древовидную структуру.

Это похоже на достаточно приличное решение? http://www.cs.ucsb.edu/~foschini/files/licenza_spec_thesis.pdf
Если ничего другого, я думаю, что другие данные-шахтеры могут наслаждаться.

Спасибо всем!
Nathan

+0

Что такое {A, B, C, D}? одиночные символы, слова/жетоны или подстроки? – wildplasser

+0

Я не специалист в этой области, но это очень похоже на то, что вы хотите сделать, когда строите словарь для алгоритма сжатия. – Ryan

+0

@wildplasser - это «наблюдения», сенсорные входные токены, но, насколько я знаю, они могут быть персонажами. – NargothBond

ответ

1

Первый шаг: токенизатор. Определите, что вы считаете {A, B, C, D}, а что нет.

  • вам нужно по крайней мере один дополнительный маркер для мусора/Прочая материала (хорошая новость заключается в том, что если происходит этот маркер, то StateMachine, который следует всегда будет сброшен в начальное состояние)
  • вы можете или может не хотеть сохранять пробелы (что снова вызовет дополнительный токен и много дополнительных состояний позже в распознавателе DFA или NFA)
  • Возможно, вам нужен какой-то класс эквивалентности: например, перенос всех числовых строк на один токен тип; fold lower/uppercase; принимайте определенную степень орфографической ошибки (сложно!)
  • вам могут понадобиться специальные типы токенов для начала строки/конца строки и т.п.
  • вы должны сделать выбор относительно суммы ложных срабатываний против суммы ложных негативов, которую вы разрешаете.
  • Если есть текст, убедитесь, что все источники находятся в одном и том же каноническом кодировании или предварительно обработайте их, чтобы привести их в одну кодировку.

Строительство tokeniser является отличным способом, чтобы исследовать ваш корпус: если это реальные данные от внешнего мира, вы будете поражены о фанках случаев вы даже не знали, что они существовали, когда вы начали!

Второй шаг (распознаватель), вероятно, будет намного проще, учитывая правильную токенизацию. Для нормального детерминированного statemachine (с предопределенными последовательностями для распознавания) вы можете использовать стандартные алгоритмы из книги Дракона или из Crochemore.

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

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

+0

Спасибо большое; особенно стремятся заглянуть в самообучающиеся матчи. – NargothBond

+0

BTW: Какова ваша область интереса? Естественный язык? анализ лог-файла? ДНК-признание? Признание цифровой музыки; – wildplasser

+0

Я кратко упомянул об этом в первом абзаце вопроса. Я хочу создать автономную обучающую единицу с входным потоком сенсорных входных токенов (A, B, C и Ds). Нейронная ассоциация на низком уровне проходит мимо них, просто приближаясь друг к другу. Распознавание образов кодирует идеи. Я полагаю, что это еще не совсем AI, но, как и ALU компьютера, этот ALU должен функционировать как ядро ​​операций для функционального AI. Как человек создан по образу и подобию Бога (Быт. 1:27), я не надеюсь на отдых души, но я оптимистичен для воспроизведения животного мозга. – NargothBond

Смежные вопросы