Распознавание образов в нейронной сети с использованием моделирования Matlab - PullRequest
1 голос
/ 27 января 2012

Я новичок в этой нейронной сети в Matlab. Я хотел создать нейронную сеть с использованием симуляции matlab.

Эта симуляция Matlab использует распознавание образов. Я работаю на платформе Windows XP.

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

В настоящее время я извлек поляки из этих трех фигур, цилиндра, круга и прямоугольника. Но я не знаю, как мне следует создавать свою нейронную сеть.

Ответы [ 2 ]

1 голос
/ 20 ноября 2012

Я бы порекомендовал использовать SOM (самоорганизующуюся карту) для распознавания образов, поскольку она действительно надежна. Также вас может заинтересовать Som Toolbox для Matlab . Однако, чтобы заставить его изучать волны, пренебрегая их смещениями, вам необходимо внести некоторые изменения в «функцию подобия». Эти изменения сильно повлияют на время обучения ЗВОЛ, но если это не проблема, продолжайте читать.

Для SOM вам нужно будет сэмплировать ваши волны в векторы постоянного размера, скажем:

  • sin x -> sin_vector = (a1, a2, a3, ..., aN)
  • cos x -> cos_vector = (b1, b2, b3, ..., bN)

Обычно сходство «SOM-векторов» вычисляется с евклидовым расстоянием. Евклидово расстояние этих двух векторов огромно, поскольку они имеют разное смещение. В вашем случае они должны считаться похожими, т.е. расстояние должно быть маленьким. Так что ... если вы не сэмплируете все похожие волны из одной и той же начальной точки, они будут классифицированы в разных классах. Это, вероятно, проблема. Но! Сходство векторов в SOM рассчитывается для того, чтобы найти BMU (наиболее подходящую единицу измерения) из карты и потянуть векторы BMU и его соседства к значениям заданной выборки. Поэтому все, что вам нужно изменить, - это способ сравнения этих векторов и способ вытягивания значений векторов к выборке так, чтобы оба они были «смещены».

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

Это решение относительно медленное, но должно отлично работать. Я бы рекомендовал тщательно изучить концепцию СДЛ, а затем снова прочитать этот пост (и гневные комментарии):)

ПОЖАЛУЙСТА, прокомментируйте если вы знаете какое-то математическое решение, которое будет лучше предыдущего!

0 голосов
/ 01 октября 2012

Вы можете попробовать использовать инструмент распознавания образов нейронной сети Matlab nprtool, поскольку он специализируется на обучении и тестировании нейронной сети для распознавания образов.

...