Ambang batas model Markov tersembunyi

14

Saya telah mengembangkan sistem bukti konsep untuk pengenalan suara menggunakan model mfcc dan markov tersembunyi. Ini memberikan hasil yang menjanjikan ketika saya menguji sistem pada suara yang dikenal. Meskipun sistem, ketika suara yang tidak dikenal dimasukkan mengembalikan hasil dengan kecocokan terdekat dan skor tidak berbeda untuk merancang itu adalah suara yang tidak diketahui misalnya::

Saya telah melatih 3 model markov tersembunyi satu untuk berbicara, satu untuk air keluar dari keran air dan satu untuk mengetuk meja. Lalu saya mengujinya pada data yang tidak terlihat dan mendapatkan hasil berikut:

input: speech
HMM\knocking:  -1213.8911146444477
HMM\speech:  -617.8735676792728
HMM\watertap:  -1504.4735097322673

So highest score speech which is correct

input: watertap
HMM\knocking:  -3715.7246152783955
HMM\speech:  -4302.67960438553
HMM\watertap:  -1965.6149147201534

So highest score watertap which is correct

input: knocking
HMM\filler  -806.7248912250212
HMM\knocking:  -756.4428782636676
HMM\speech:  -1201.686687761133
HMM\watertap:  -3025.181144273698

So highest score knocking which is correct

input: unknown
HMM\knocking:  -4369.1702184688975
HMM\speech:  -5090.37122832872
HMM\watertap:  -7717.501505674925
Here the input is an unknown sound but it still returns the closest match as there is no system for thresholding/garbage filtering.

Saya tahu bahwa dalam kata kunci, mencari suara OOV (out of vocabulary) dapat disaring menggunakan model sampah atau pengisi tetapi dikatakan dilatih menggunakan seperangkat kata yang tidak diketahui di mana ini tidak dapat diterapkan ke sistem saya karena saya tidak tahu semua suara yang dapat direkam oleh sistem.

Bagaimana masalah serupa diselesaikan dalam sistem pengenalan ucapan? Dan bagaimana saya bisa menyelesaikan masalah saya untuk menghindari kesalahan positif?

Radek
sumber

Jawaban:

5

Pertanyaan yang sangat bagus

Seperti yang Anda sebutkan, satu-satunya cara agar HMM memberi Anda jawaban "Saya tidak tahu" (sebut saja OOV) adalah memberinya status khusus karena selalu menampilkan negara dengan kemungkinan tertinggi di bawah model Anda. Jadi, Anda harus memastikan bahwa OOV memiliki kemungkinan lebih tinggi di bawah setiap input yang tidak speech, watertapatau knocking.

Jawaban singkatnya adalah ini tidak mungkin. Karena HMM bukanlah pengenal pola absolut. Ini hanya membandingkan kemungkinan output di bawah model Anda, dan dalam konteks itu dilatih .

Pikirkan tentang input yang akan speechdan knockingpada saat yang sama. Kemungkinan besar HMM akan "ragu" antara kedua negara ini karena input ini memiliki fitur masing-masing. Pada akhirnya akan menghasilkan salah satu dari mereka, tetapi sangat tidak mungkin bahwa itu akan menghasilkan OOV. Dalam hal bercak kata kunci, tebakan saya adalah Anda dapat menemukan input pintar yang akan menipu HMM mereka secara konsisten. Namun, penulis mungkin tahu input apa yang diharapkan dan mereka telah memilih daftar terbatas kata-kata yang tidak diketahui sehingga input beracun ini jarang terjadi.

Saya menyarankan Anda melakukan hal yang sama. Pikirkan tentang situasi yang akan Anda gunakan HMM dan latih status OOV pada input paling umum yang ingin Anda hilangkan. Anda bahkan dapat berpikir memiliki beberapa status OOV.

gui11aume
sumber
2
Tapi bagaimana dengan model ambang berbasis hmm untuk pengenalan gerakan yang dijelaskan di sini: herin.kaist.ac.kr/Publication/PS/hklee_PAMI_i09611.pdf . Mereka membuat model ambang yang merupakan hmm ergodik yang memiliki status masing-masing hmm digabungkan bersama. "Model ambang bertindak sebagai garis dasar. Isyarat kandidat ditemukan ketika model gerakan tertentu naik di atas ambang" hmm
Radek
Seperti yang tertulis di judul, ini adalah algoritma berbasis HMM, jadi ini bukan HMM. Tampak bagi saya bahwa HMM murni tidak sesuai dengan kebutuhan Anda, dan bahwa classifier berbasis ambang batas memang lebih cocok.
gui11aume
5

Ini agak umum di bidang pengenalan gerakan. Jawabannya adalah untuk membuat model ambang seperti yang dijelaskan dalam makalah oleh Lee dan Kim (1999)

Ini memainkan peran yang sama dengan model pengisi atau sampah, tetapi tidak perlu dilatih secara terpisah seperti yang Anda katakan. Anda dapat membuat model ambang dengan menghubungkan semua status transisi-diri dari model Anda yang lain dan menginisialisasi transisi dengan probabilitas yang seragam, yang sepenuhnya menghubungkan kondisi tersebut. Silakan lihat di atas kertas untuk melihat bagaimana itu sebenarnya dapat dilakukan.

Bahkan jika perpustakaan Anda tidak mendukung model ergodik, perpustakaan Anda seharusnya tidak mencegah Anda secara manual membuat model ukuran yang diperlukan dan mengatur negara sesuai. Jika Anda benar-benar ingin perpustakaan untuk itu, maka implementasi untuk pengklasifikasi model Markov tersembunyi termasuk dukungan untuk model ambang tersedia di Kerangka Kerja Accord.NET , misalnya.

Penafian: Saya penulis perpustakaan ini.

Cesar
sumber
Benar saya bisa secara manual membuat model ambang. Jadi katakanlah misalnya saya punya dua model hmm bernama: sound1 dan sound2. Keduanya memiliki 2 negara. Lalu saya membuat model ambang dengan 4 negara. Setiap negara memiliki nilai awal yang sama yaitu 0,25. Kemudian saya mengatur distribusi seragam untuk semua transisi yang mungkin jadi semua transisi keadaan yang mungkin (0,0), (0,1), (1,0), (1,1), (1,2), (2,1), (2,2), dll. Mendapatkan distribusi seragam 0,0625. Kemudian untuk state 1 dan 2 dari model threshold saya atur opdf state 1 dan 2 dari sound1 dan untuk state 3 dan 4 dari threshold saya atur opdf state 1 dan 2 dari sound2.
Radek
Apakah pendekatan yang dijelaskan di atas benar?
Radek
1
Tidak cukup ... mungkin saya agak longgar pada uraian saya. Elemen diagonal dari matriks transisi Anda untuk model threshold menerima probabilitas transisi-diri asli dari model Anda yang lain. Transisi dari suatu negara ke negara lain diinisialisasi dengan probabilitas yang seragam. Saya tahu mungkin terlihat malas untuk menunjukkannya ke kode, tetapi terkadang kode lebih mudah dipahami daripada rumus .
Cesar
Ngomong-ngomong, jika Anda telah membaca makalah oleh Lee dan Kim dan telah menafsirkannya secara berbeda, atau percaya implementasi saya salah, tolong beri tahu saya.
Cesar
3

Jadi yang saya lakukan adalah: Saya membuat versi model pengisi yang disederhanakan. Setiap hmm mewakili bunyi watertap, bunyi ketukan dan bunyi wicara adalah 6 hmm keadaan terpisah yang dilatih oleh bunyi dari perangkat pelatihan yang terdiri dari 30, 50, 90 bunyi masing-masing dengan berbagai panjang 0,3 detik hingga 10 detik. Kemudian saya membuat model pengisi yang merupakan 1 negara bagian hmm yang terdiri dari semua suara pelatihan set untuk mengetuk, air dan pidato. Jadi jika skor model hmm lebih besar untuk suara yang diberikan daripada skor pengisi - suara dikenali sebaliknya itu adalah suara yang tidak dikenal. Saya tidak benar-benar memiliki data besar tetapi saya telah melakukan tes berikut untuk penolakan positif palsu dan penolakan positif sebenarnya pada suara yang tidak terlihat.

true positives rejection
knocking 1/11 = 90% accuracy
watertap 1/9 = 89% accuracy
speech 0/14 = 100% accuracy


false positives rejection
Tested 7 unknown sounds
6/7 = 86% accuracy

Jadi dari tes cepat ini saya dapat menyimpulkan bahwa pendekatan ini memberikan hasil yang masuk akal walaupun saya memiliki perasaan aneh mungkin tidak cukup.

Radek
sumber
+1 Ini sangat menarik. Jika Anda belum melupakan pekerjaan ini, apakah pendekatan ini berhasil pada akhirnya? Apakah itu cukup sebagai model 'pengisi / lainnya'? Jika tidak, apakah Anda akhirnya menerapkan sesuatu yang lain?
Zhubarb