Распознавание речи. Какое текущее состояние?

Реально работающие приложения, программные и программно-аппаратные продукты.

Модераторы: DCV, Dimmy, daner, victorst, Администраторы

Распознавание речи. Какое текущее состояние?

Сообщение Tester » Вс окт 25, 2009 7:41:29

Недавно "порыл" по теме... И почти ничего не нашел! Ни одной серьезной программы, даже ДЕМО-версии! :(
По крайней мере на русском языке. Почему? (хотя кто-то уверяет что программы есть, они много стоят, но попробовать не дают)
Читал теорию и выяснил, что одно из делений программ - это "дикторозависимость" - привязка к одному или к многим РАЗНЫМ голосам одновременно.
Неужели это настолько тяжело что нет фирмы, которая написала свой продукт вроде файн-риадера в распознавании текста?

Даже простых примеров не нашел - пусть программа хотя-бы определит пятерку команд! Это уже будет шедевр, который можно будет встраивать даже в выключатели света "Свет включить"-"Свет выключить" или даже чтобы исключить случайности перехвата бытовых разговоров "Дом, включи/выключи свет"
Техника за последние 10ток лет уже давно доросла - еще тогда была программа Dragon-dictate с русификацией Горыныч, которая сносно определяла десяток слов (правда через неделю выдыхалась без явных причин, а потом сдыхала окончательно). Нынешние микрофоны для общения через Skype тоже уже на высоте...

Я наконец ДОРОС до анализа звуков. Хочу попробовать...
Какие "грабли" меня ждут?
Андрей
Аватара пользователя
Tester
Серьёзный посетитель
 
Сообщения: 101
Зарегистрирован: Пн янв 10, 2005 15:35:11
Откуда: Украина

Сообщение DK_sensey » Вс окт 25, 2009 9:28:27

Судя по всему как и при любом распознавании мы здесь сталкиваемся с проблемой большого количества инвариантов одного и того же класса. Пока задачи распознавания повидимому могут решаться только штучно и специализированно, какждый раз для этого нужно проделать большую работу.
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение Tester » Вс окт 25, 2009 17:10:54

Я не против поработать... Хочу попробовать прослушивать разговоры идущие со Skype - оба канала (идущий с микрофона и отправляемый на динамики. Так-же можно отлавливать звук идущий от телевизора. В нужный момент программа услышав знакомое слово и покажет его на отдельном окне. А так-же у меня есть много аудио-файлов с голосами.

Просто не могу понять почему это не было сделано уже много лет назад хотя-бы в для нескольких слов!!!!
1)Сколько ИИ-шников в разных форумах пытались посадить на нейроны распознавание звука...
2)Любой хороший программист вполне может написать законченную схему анализа звука за месяц, а дальше ее просто годами улучшать...
3)Служба безопасности любой страны вкладывает миллионы в продукты безопасности вроде поиска определенных слов в телефонных разговорах. Помните распечатки звонков из фильма "Правдивая ложь" (с Шварцнегером)? Неужели прослушивая тысячи звонков по всей России ФСБ не захочет иметь подобную программу и не наймет для этого команду специалистов? И неужели эти специалисты не придумают как через лет 10 максимум рассекретить подобные разработки.
4)Майкрософт вкладывает миллионы в свою систему распознавания.

Слышал что у американцев даже боевые самолеты слушаются голосовых команд пилота.

Неужели система НАСТОЛЬКО сложная???
Андрей
Аватара пользователя
Tester
Серьёзный посетитель
 
Сообщения: 101
Зарегистрирован: Пн янв 10, 2005 15:35:11
Откуда: Украина

Сообщение DK_sensey » Вс окт 25, 2009 18:17:09

Голосовое управление по моему появилсь еще в Windows XP. Я правда не пользовался, не могу сказать насколько оно хорошее.

Впринципе я не вижу ничего сложного в распознавании голоса. По моему достаточно разложить звук в спектр и распознавать спектральные картины подобно любому распознаванию образов. Но насколько я понимаю в мире на данный момент распознавание образов это пока трудоемкая задача, требующая большой работы программистов. Каждую конкретную задачу видимо приходится программировать специальн, нет универсальных средств для любых предметных областей. Отсюда дороговизна подобных разработок и отсутствие их для массового пользователя. Мне так кажется.
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение Tester » Пн окт 26, 2009 2:08:19

Впринципе я не вижу ничего сложного в распознавании голоса. По моему достаточно разложить звук в спектр и распознавать спектральные картины подобно любому распознаванию образов. Но насколько я понимаю в мире на данный момент распознавание образов это пока трудоемкая задача...


Уже 3й день ищу необходимые мне компоненты и думаю через часов 20-30 (работы) смогу отобразить 3D графиком записанный голос... хочу увидеть на что похожи эти волны на графике! И что общего при различном произношении...
Один знакомый указал на отличие от FineReader: Там используются 2х мерная матрица, содержащая лишь бинарное значение - черная или белая точка, а здесь нужно распознавать и "серые" градиенты (амплитуда). А это значит другие математические формулы...

Нашел несколько программ распознавания голосовых команд на разных дикторах, но почему-то их нейронные сети продолжают обучаться и дальше.... Через пол часа вполне успешного распознавания начинают "сдыхать". Почему подобное не происходит у FineReader?
Андрей
Аватара пользователя
Tester
Серьёзный посетитель
 
Сообщения: 101
Зарегистрирован: Пн янв 10, 2005 15:35:11
Откуда: Украина

Сообщение DK_sensey » Пн окт 26, 2009 8:29:33

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

Один знакомый указал на отличие от FineReader: Там используются 2х мерная матрица, содержащая лишь бинарное значение - черная или белая точка, а здесь нужно распознавать и "серые" градиенты (амплитуда). А это значит другие математические формулы...

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

Добавлено спустя 2 минуты 49 секунд:

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

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

Добавлено спустя 4 минуты 29 секунд:

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

Примерно за сутки он смог найти решение задачи распознавания текста более эффективное чем я вручную в течение предыдущих двух месяцев. Так что думаю с таким инструментом дела пойдут у меня теперь быстрее.
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение Tester » Вт окт 27, 2009 6:36:27

Этот метод разработат профессором Е.В.Луценко. Если интересно могу дать ссылку на его научные работы.


Спасибо за предложение, но пока РАНО! :)))
Много лет назад заметил что кидаться на всю информацию которая "может пригодиться" вреднее чем работать начиная с нуля. Любой проект надо делать постепенно. Склеивать чужие части иногда тяжелее чем дописать к одной части другую. Особенно остро это относиться к отрасли этого форума (ИИ) - чужих идей тысячи, готовых исходников сотни, а статей на тему миллионы! Опробовать все - жизни не хватит. А идею брать можно только тогда когда УЖЕ на этом застрял! ;)

Возможно через несколько месяцев обращусь к Вам за этими ссылкам! :)
Пока застрял с графиком, потоками, структурой WAV и MP3 файлов. Самое обидное, что все это кажется уже давно есть в матлабе или в маткаде. А здесь все почти с нуля, на глючных исходниках, на Делфи и больше 130кб pas-файлов.

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

Добавлено спустя 25 минут 54 секунды:

Кажется даже нашел объяснение... оказывается это все преобразования Фурье.
Почитал немножко по теорию звука. Если кому интересно: http://www.3dnews.ru/multimedia/zvuk_urok_1/
Век живи - век учись...
Теперь надо найти эти формулы FFT :)

Добавлено спустя 13 минут 43 секунды:

FFT нашел (http://alglib.sources.ru/fasttransforms/fft.php)
но что с этим делать? надо еще разбираться! :(
Андрей
Аватара пользователя
Tester
Серьёзный посетитель
 
Сообщения: 101
Зарегистрирован: Пн янв 10, 2005 15:35:11
Откуда: Украина

Сообщение DK_sensey » Вт окт 27, 2009 8:18:09

Спасибо за предложение, но пока РАНО! ))
Много лет назад заметил что кидаться на всю информацию которая "может пригодиться" вреднее чем работать начиная с нуля. Любой проект надо делать постепенно. Склеивать чужие части иногда тяжелее чем дописать к одной части другую. Особенно остро это относиться к отрасли этого форума (ИИ) - чужих идей тысячи, готовых исходников сотни, а статей на тему миллионы! Опробовать все - жизни не хватит. А идею брать можно только тогда когда УЖЕ на этом застрял!

Перепробовать все - нереально. Но ознакомиться со всем - вполне реально. Особенно если освоить скорочтение. Вообще я для себя уяснил - на восприятие объемов информации у человека предела нет. Но есть жесткий предел на то что человек может успеть сделать. Поэтому нужно не перепробывать все и вся руками а проанализировать все и вся разумом, а руками сделать только ровно то что надо сделать.

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

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

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

Добавлено спустя 3 минуты 30 секунд:

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

Вообще теоретически НС может моделировать любые функции и математические формулы и компьютерные процедуры. НС - это низкоуровневая элементная база при помощи которой можно закодировать все что угодно, как и при помощи логических элементов "И" "ИЛИ" "НЕ". Суть не в самих элементах а в высокоуровневых конструкциях. Преобразование Фурье для работы полюбому придется делать - хоть на НС хоть обычной арифметикой.
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение Tester » Ср окт 28, 2009 23:07:40

Перепробовать все - нереально. Но ознакомиться со всем - вполне реально. Особенно если освоить скорочтение. Вообще я для себя уяснил - на восприятие объемов информации у человека предела нет. Но есть жесткий предел на то что человек может успеть сделать. Поэтому нужно не перепробывать все и вся руками а проанализировать все и вся разумом, а руками сделать только ровно то что надо сделать.


Восприятие информации занимает слишком много времени - за последние столетия набралось много всего... Формулы требуют внимания, времени, определенных усилий и самое страшное - памяти. Когда-то я знал около 5 методов получения формулы Энштейна (Е=М*С^2), а сейчас помню только формулу и то что у нее есть несколько доказательств. А за годы получения "вышки" формул было ОЧЕНЬ много. Хорошо если десяток помню. И может узнаю еще штук 30 если увижу. Лучшее что мы можем сделать - это хорошо наполнить мозг таблицей индексов и ссылок на внешнюю информацию и по возможности подобное сделать с ближайшей информацией (блокнотики, конспекты, книжки, справочники, архивы файлов, справочник ссылок на интернет). Так-же известно что лучший способ изучения информации - это погружение в среду (иностранный язык учится легче когда перестаешь отвлекаться на другие языки, научные изобретения делаются быстрее в закрытых институтах-городках без баров, дискотек, очередей). Информация не должна мешать работать! Когда я искал формулы Фурье, я нашел несколько миллионов статей с упоминанием на нескольких языках... Неужели я смогу, даже используя сверх-быстрочтение, хотя-бы пролистать их? :)
Для себя понял что лучший способ работать - уходить в "творческий запой"! Накопить информацию и не прикасаться к новой информации пока не дойду до очередного тупика или попросту не выдохнусь.
Результаты поразительные - за 2-3 подобных дня иногда делаю больше чем многие другие месяц. Кажется подобное в сети называют "Экстремальным программированием".

Добавлено спустя 1 час 3 секунды:

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


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


Уважаю! Почему-же не использовал "по теме"?
Признаюсь я не особо надеюсь САМ довести тему до ума. Пытаюсь написать ИНСТРУМЕНТ. Что-то вроде набора компонент, которые смогут использовать другие. Это лучше чем изучать еще и эту тему (целый раздел акустики) ДОСКОНАЛЬНО.
По моему если подобную программу сделать, то она серьезно всколыхнет мир, а автор (или компания) станет богат и знаменит! :)

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

Вот здесь мне не помешала бы помощь. Формулы нашел, но они слишком мутные. А готовых алгоритмов еще не встретил. Вот бы простой алгоритм преобразования простой 2Д матрицы в 3Д матрицу на любом алгоритмическом (а не математическом) языке. Не подскажешь?
Теоретически точность узнавания частот не обязательна.

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

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


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

Одним из направлений, которые я мечтаю попробовать развить сам (не скоро!)- научиться "оцифровывать нейронные схемы" - пытаться де компилировать матрицу связей в программный код. А так-же понять как можно "положить" информацию в нейроны - преобразовать программный код в нейронную сеть без серьезного обучения - прямой компиляцией! Чтобы результат обработки сетью был похожим на результат программы. Уверен что подобное возможно!
Это просто необходимо для ПОНЯТИЯ работы мозга! Без подобной технологии никогда не получиться прямого интерфейса "Мозг-компьютер". Лучшее что будет - снятие простых сигналов, интерпретация их для управления техникой. :(
Но для этого нужны ДРУГИЕ инструменты!!!! Нестандартные языки и среды. И повышение скорости и количества процессоров никогда не будет "панацеей".

Добавлено спустя 9 минут 29 секунд:

Еще про нейроны! Если не ошибаюсь, там нельзя обработать ЧАСТЬ таблицы, по ходу выяснив, что необработанная часть больше не нужна... Хотя это является основой процедурно-функционального программирования!
Андрей
Аватара пользователя
Tester
Серьёзный посетитель
 
Сообщения: 101
Зарегистрирован: Пн янв 10, 2005 15:35:11
Откуда: Украина

Сообщение DK_sensey » Чт окт 29, 2009 8:14:56

Восприятие информации занимает слишком много времени - за последние столетия набралось много всего... Формулы требуют внимания, времени, определенных усилий и самое страшное - памяти. Когда-то я знал около 5 методов получения формулы Энштейна (Е=М*С^2), а сейчас помню только формулу и то что у нее есть несколько доказательств. А за годы получения "вышки" формул было ОЧЕНЬ много. Хорошо если десяток помню. И может узнаю еще штук 30 если увижу.

Не нужно так много переживать и волноваться. Времени конечно нужно много - это правда но оно того стоит. Иначе не существовали бы ВУЗЫ и народ не тратил бы 5 лет своей жизни не понятно на что. :)

А вообще процесс собственного обучения можно оптимизировать. Память человека неограниченна если не пытаться ее насиловать. Я никогда в жизни ничего не зубрил. Все что я читал - я читал с интересом. И мне не нужно было усилий чтобы запомнить то что мне интересно. Так что главный критерий тут - чтобы был интерес. Тогда и память неограниченнаю. Если же что-то запихиваешь в себя через силу - тут и появляются ограничения памяти. Похоже наша природа не терпит насилия.

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

Результаты поразительные - за 2-3 подобных дня иногда делаю больше чем многие другие месяц. Кажется подобное в сети называют "Экстремальным программированием"

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

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

[quoet]
Уважаю! Почему-же не использовал "по теме"?
Признаюсь я не особо надеюсь САМ довести тему до ума. Пытаюсь написать ИНСТРУМЕНТ. Что-то вроде набора компонент, которые смогут использовать другие. Это лучше чем изучать еще и эту тему (целый раздел акустики) ДОСКОНАЛЬНО.
По моему если подобную программу сделать, то она серьезно всколыхнет мир, а автор (или компания) станет богат и знаменит!
[/quote]
Я обязательно хочу использовать по теме! Более того - я сначала хотел использовать ИИ применительно к работе со звуком и конкретно для музыки. Моей давней мечто было создать систему способную сочинять музыку неплохого уровня, не хуже человека. И эта мечта никуда не исчезла, просто на пути ее конкретной реализации я пришел к многим промежуточным задачам. И то что я делаю на данный момент - одна из таких промежуточных задач. Я смогу реализовать свою давнюю мечту когда шаг за шагом реализую все необходимые этапы для осуществления этой мечты. И "по теме" обязательно использую - всему свое время. И думаю уже не такое уж отдаленное.

Моя мечта - вернуться к занятиям музыкой, но уже вооруженным мощным инструментарием на базе систем ИИ а так же финансовой обеспеченностью, которая позволит мне не вкалывать с утра до вечера на ненавистной каторге а на расслабоне заниматься любимым делом:)

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


Вот здесь мне не помешала бы помощь. Формулы нашел, но они слишком мутные. А готовых алгоритмов еще не встретил. Вот бы простой алгоритм преобразования простой 2Д матрицы в 3Д матрицу на любом алгоритмическом (а не математическом) языке. Не подскажешь?
Теоретически точность узнавания частот не обязательна.

Вообще-то преобразование Фурье вещь элементарная. По моему мы это изучали по математике где-то на 2-м курсе. А может на 1-м. Уже не помню. Я правда по памяти не очень хорошо помню эти формулы. Там был косинус и сумма. Я поищу формулы и вышлю тебе в личку если хочешь. Вообще в и-нете по преобразованию Фурье ты точно найдешь исчерпывающую информацию, поищи.

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

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

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

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

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

Добавлено спустя 5 минут 58 секунд:

НУ я имею ввиду компиляцию НС в алгоритм. Обратная задача не настолько тривиальна - ей я пока не занимался - по сути это обучить систему программированию на каком нибудь алгоритмическом языке:)

Добавлено спустя 42 секунды:

Такое впринципе возможно.

Добавлено спустя 3 минуты 5 секунд:

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

Добавлено спустя 38 секунд:

Но это конечно я пока рассматриваю как отдаленную перспективу.

Добавлено спустя 8 часов 31 минуту 59 секунд:

С нейронам я НЕ дружу! Скучно! Слишком много направлений, слишком много участников, слишком много схем реализации, размытый и НЕ предсказуемый результат,

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

НС распознает нечетко, может ошибаться. Но это не потому что плох метод а потому что не все можно четко распознать. Если между двумя фактами нет однозначной причинно-следственной связи то такую связь между ними и невозможно установить. Но может существовать ВЕРОЯТНОСТНЯ связь типа - "если случился факт А то вероятность 78.34634% что случится факт Б". В подавляющем большинстве, в естественной действительности, мы имеем дело именно с такими "размытыми" причинно следственными связями. Однако ИНОГДА, как крупицы золота среди песка, находятся и четкие связи типа - "если случился факт А то вероятность 100% что случится факт Б". И такие связи НС ТОЖЕ четко моделирует - без каких бы то ни было проблем. Если между какими либо фактами ДЕЙСТВИТЕЛЬНО существует четкая связь то она ГАРНТИРОВАННО будет обнаружена при обучении НС.

Таким образом результат работы размыт не потому что плоха НС а потому что размыта сама действительность:) Системы же оперирующие только четкими правилами, не рассматривающие вероятности попросту не рассматривают большую часть действительности,игнорируют ее. Именно поэтому системы построенные на четких правилах демонстрируют полную несостоятельность при попытке обрабатывать ими непосредственную наблюдаемую действительность.
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение Tester » Чт окт 29, 2009 16:19:26

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

Это действительно проблема! :(
Моя работа напрямую связана с программированием, хотя и не в направлении ИИ. Поэтому те методы которые могу получить изучая ИИ иногда могу вставить в обычную работу. Что-то вроде тренировки. :)
Так-же придумал несколько направлений ИИ, которые можно будет потом продать через интернет.

Вообще-то преобразование Фурье вещь элементарная. По моему мы это изучали по математике где-то на 2-м курсе. А может на 1-м. Уже не помню. Я правда по памяти не очень хорошо помню эти формулы. Там был косинус и сумма. Я поищу формулы и вышлю тебе в личку если хочешь. Вообще в и-нете по преобразованию Фурье ты точно найдешь исчерпывающую информацию, поищи.

Вроде даже нашел что-то подобное, но запустить примеры пока не получилось! Но все равно жду в личку!
Это один из примеров, когда подводит память: точно учил, точно сдал, но точно не помню даже внешнего вида...
Хотя физический смысл примерно помню - что-то вроде "любой непрерывный график можно заменить функцией фурье"

Добавлено спустя 1 час 36 минут 20 секунд:

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

НУ я имею ввиду компиляцию НС в алгоритм. Обратная задача не настолько тривиальна - ей я пока не занимался - по сути это обучить систему программированию на каком нибудь алгоритмическом языке:)

Я не совсем это имел в виду! У тебя начальный этап - частный случай. Когда ядро нейронов простые математические и причем вполне известные формулы. А если формулы поменять? Твоя программа сразу ломается!
По какой схеме работает нейрон человеческого мозга? Допустим со временем эти формулы можно будет прочитать... Тогда очень даже поможет умение понять что же записано в этом кусочке сети :twisted:
А зачем компилировать программу в сеть, если известно, что программа работает намного эффективнее на обычных процессорах?
Андрей
Аватара пользователя
Tester
Серьёзный посетитель
 
Сообщения: 101
Зарегистрирован: Пн янв 10, 2005 15:35:11
Откуда: Украина

Сообщение DK_sensey » Чт окт 29, 2009 20:26:48

Цитата:
Вообще-то преобразование Фурье вещь элементарная. По моему мы это изучали по математике где-то на 2-м курсе. А может на 1-м. Уже не помню. Я правда по памяти не очень хорошо помню эти формулы. Там был косинус и сумма. Я поищу формулы и вышлю тебе в личку если хочешь. Вообще в и-нете по преобразованию Фурье ты точно найдешь исчерпывающую информацию, поищи.


Вроде даже нашел что-то подобное, но запустить примеры пока не получилось! Но все равно жду в личку!
Это один из примеров, когда подводит память: точно учил, точно сдал, но точно не помню даже внешнего вида...
Хотя физический смысл примерно помню - что-то вроде "любой непрерывный график можно заменить функцией фурье"

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

следующие два выражения нужно вычислять для каждого кванта волновой формы:

v:=(y2-y1)*kv;
yf:=(yf+v)*ky;



где y1- предыдущий квант волновой формы исходного сигнала
y2-текущий квант волновой формы исходного сигнала
yf-текущий квант волновой формы на выходе фильтра
kv-коэффициент задающий резонансную частоту фильтра (можно рассчитать, но я уже не помню как - проще подобрать и записать в тблицу различные для разных частот). Имеет пределы от 0 до 1.
ky-коэффициент задающий величину резонанса. Имеет пределы от 0 до 1.


А зачем компилировать программу в сеть, если известно, что программа работает намного эффективнее на обычных процессорах?

В том то и дело что лишь работает. Но анализировать и сравнивать с другими системами лучше на языке более подходящем для этого. И притом едином для любых систем.

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

Добавлено спустя 4 минуты 1 секунду:

Извиняюсь я допустил ошибку в выражениях, правильно будет так:

v:=(yf-y2)*kv;
yf:=(yf+v)*ky;

т.е. предыдущий квант исходного сигнала нам не нужен (y1).

Добавлено спустя 2 минуты 8 секунд:

И еще одно замечание - на выходе резонансного фильтра мы тоже получаем волновую форму но уже отфильтрованную в основном по одной частоте - нужно замерять амплитуду этого сигнала чтобы определить уровень этой частоты в исходном сигнале. Думаю определить амплитуду для тебя не составит затрудения.
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение shuklin » Чт окт 29, 2009 23:03:26

v:=(yf-y2)*kv;
yf:=(yf+v)*ky;


Если не ошибаюсь, то это будет модель RC цепочки, а не LC. Резонанса здесь не будет.
shuklin
Разбирающийся в ИИ
 
Сообщения: 426
Зарегистрирован: Чт янв 11, 2007 21:03:53
Откуда: http://www.shuklin.com

Сообщение DK_sensey » Чт окт 29, 2009 23:15:42

Резонанс будет.

Без резонанса будет если так:

yf:=(yf-y2)*k;

Все эти вещи я сам для себя открыл когда мне было 16 лет - в 1992 году, и проверил на компьютере ZX Spectrum :)

Добавлено спустя 3 минуты 3 секунды:

Блин, ну опять напортачило, не уже ли никак не научусь с первого раза писать без ошибок:) Надо так:

yf:=y2+(yf-y2)*k;

А для резонансного фильтра надо так:

v:=v+(yf-y2)*kv;
yf:=(yf+v)*ky;

Добавлено спустя 27 секунд:

Теперь все правильно.

Кажется... :)
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение shuklin » Пт окт 30, 2009 0:07:51

Боюсь Вы за резонансный LC фильтр могли принять RC фильтр ослабляющий высокие частоты а за частоту его резонанса приняли постоянную времени. В любом случае, согласен что много тут мутить не нужно. Для RC фильтра будет достаточно хранить "заряд в емкости", а для LC видимо будет достаточно хранить "заряд" и "магнитное поле в катушке".
shuklin
Разбирающийся в ИИ
 
Сообщения: 426
Зарегистрирован: Чт янв 11, 2007 21:03:53
Откуда: http://www.shuklin.com

Сообщение DK_sensey » Пт окт 30, 2009 8:09:48

Вы просто обработайте этими выражениями какой нибудь wav-файл и послушайте - резонанс слышен невооруженными ушами:) Я в 16 лет не знал теории, я эти формулы открыл чисто эмпирически, экспериментируя со звуком. И хотя на ZX Spectrum'е не было звуковой карты я сам приделал к нему цифроаналоговый преобразователь и мог получать звук с качеством 8 бит и частотой дискретизации примерно 8 кГц:) Я даже написал тогда некое подобие трекера работающего с этой "звуковой картой" :).

А зачем моделировать конденсаторы и катушки? точная имитация будет намного более грамоздка и будет медленней работать.

Добавлено спустя 2 минуты 47 секунд:

Хотя конечно качество результата будет несколько повыше.

Добавлено спустя 4 минуты 14 секунд:

Блин я и второй раз тоже написал неверные выражения. Правильно будет так:

v:=v+(y2-yf)*kv; (y2 и yf в скобках поменял местами - иначе вместо резонанса получим мгновенный улет yf в бесконечность. сильно извиняюсь!)
yf:=(yf+v)*ky;

Добавлено спустя 1 минуту 14 секунд:

Преобразование Фурье сегодня вечером выложу. Первый вариант "академический", из книжки, а второй доработанный мною под "реалии жизни".:)

Добавлено спустя 1 минуту 35 секунд:

Tester - если что-то не заработает то скажи, потмоу что я не уверен что еще не допустил ошибок. Просто я пишу по памяти не проверяя на компе - времени пока на это не было. Но сегодня вечером все проверю (и резонансный филтр и преобразование Фурье) и выложу уже гарантированно работоспособные формулы.
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение Tester » Пт окт 30, 2009 19:20:29

Примерно понял. Теперь буду работать. Если что-нибудь получиться, выложу программу! :)
Пока передо мной такие цели:
1) читать из WAV или MP3 файлов в буфер
2) буфер отображать на 3Д графике (компонент 3Д графика уже сделал)
3) заполнять буфер прямо с микрофона и в реальном времени рисовать график.

Потом попробую анализировать графики...
Андрей
Аватара пользователя
Tester
Серьёзный посетитель
 
Сообщения: 101
Зарегистрирован: Пн янв 10, 2005 15:35:11
Откуда: Украина

Сообщение DK_sensey » Пт окт 30, 2009 21:11:49

Разложение в спектр периодической функции заданной таблицей y[0..n-1]

==============
Чтобы найти амплитуду гармоники с номером k нужно вычислить следующее:

ak:=0;
for i:=0 to n-1 do ak:=ak+y[i]*cos(k*i/n*2*pi);
ak:=ak*2/n;

bk:=0;
for i:=0 to n-1 do bk:=bk+y[i]*sin(k*i/n*2*pi);
bk:=bk*2/n;

A:=sqrt(ak*ak+bk*bk);
==============

здесь А - это и есть искомая амплитуда гармоники с номером k. Аналогичным образом можно вычислить амплитуду любой гармоники. Ряд амплитуд гармоник от 1-й до m-й - это и есть спектр.

Добавлено спустя 2 минуты 13 секунд:

Это разложение в спектр периодических сигналов - т.е. сигналов с постоянной частотой и спектром. Я в свое время доработал этот рассчет чтобы вычислять мгновенный спектр слоного сигнала с переменным спектром. Но сейчас у меня нет вреемни. Если не догадаешься сам как это сделать то может быть напишу позже.
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

Сообщение Tester » Пт окт 30, 2009 21:13:55

Еще один чисто технический вопрос:
Как можно сделать как в Skype очищать сигнал от колонок? Как убирается обратная петля? А в идеале как убрать ВСЕ сигналы идущие на колонки?
Андрей
Аватара пользователя
Tester
Серьёзный посетитель
 
Сообщения: 101
Зарегистрирован: Пн янв 10, 2005 15:35:11
Откуда: Украина

Сообщение DK_sensey » Пт окт 30, 2009 21:15:18

Я написал на Паскале. Если не понятно могу перевести в С. Ты на чем пишешь?

Добавлено спустя 1 минуту 10 секунд:

Еще один чисто технический вопрос:
Как можно сделать как в Skype очищать сигнал от колонок? Как убирается обратная петля? А в идеале как убрать ВСЕ сигналы идущие на колонки?

Вот чего не знаю того не знаю. :(

:)
DK_sensey
Серьёзный посетитель
 
Сообщения: 133
Зарегистрирован: Пт июл 17, 2009 16:50:14
Откуда: Беларусь

След.

Вернуться в Практический подход к искусственному интеллекту

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


cron


Rambler's Top100 Каталог ресурсов ListTop.Ru Каталог сайтов Союз образовательных сайтов Parenting.ru - Родители семья дети ребенок

     Сайт "Искусственный интеллект" - программирование ИИ от разработчика: общение, статьи, ссылки.