Anda di halaman 1dari 13

Algoritma Viterbi

[Sunting halaman ini] The Viterbi adalah algoritma yang dinamis pemrograman algoritma untuk mencari kemungkinan besar negara urutan tersembunyi - disebut Viterbi path - yang dihasilkan dalam rentetan peristiwa yang diamati, khususnya dalam konteks Markov sumber informasi, dan lebih umumnya, model Markov tersembunyi. Algoritma yang maju adalah erat kaitannya algoritma untuk komputasi probabilitas dari urutan peristiwa diamati. Algoritma ini termasuk ke bidang informasi teori. Algoritma yang membuat sejumlah asumsi. Pertama, baik diamati aktivitas dan acara tersembunyi harus secara berurutan. Urutan ini sering berkaitan dengan waktu. Kedua, urutan kedua harus berpihak, dan sebuah contoh dari sebuah event perlu diamati sesuai dengan tepat satu contoh yang tersembunyi acara. Ketiga, komputer yang paling mungkin tersembunyi urutan sampai titik tertentu t harus bergantung hanya pada acara diamati di titik t, dan yang paling besar di urutan titik t - 1. Ini adalah asumsi semua puas di urutan pertama-model Markov tersembunyi. Istilah "Viterbi path" dan "Viterbi algorithm" juga diterapkan terkait program algoritma yang dinamis menemukan satu penjelasan paling mungkin untuk pengamatan. Misalnya, dalam statistik parsing yang dinamis pemrograman algoritma dapat digunakan untuk menemukan satu kemungkinan besar konteks bebas asal (kalimat) dari string, yang kadang-kadang disebut sebagai "Viterbi parse". Viterbi algoritma yang telah disusun oleh Andrew Viterbi pada tahun 1967 sebagai sebuah koreksi kesalahan-skema bising digital untuk komunikasi link, menemukan universal dalam aplikasi decoding yang convolutional kode yang digunakan pada kedua CDMA dan GSM selular digital, dial-up modem, satelit, deep-ruang komunikasi , dan 802,11 LAN nirkabel. Sekarang juga biasa digunakan dalam pidato pengakuan, kata kunci spotting, linguistik komputer, dan bioinformatics. Misalnya, dalam pidato-ke-teks (speech recognition), akustik sinyal dianggap sebagai pengamatan urutan peristiwa, dan string teks yang dianggap sebagai "penyebab tersembunyi" dari akustik sinyal. Viterbi menemukan algoritma yang kemungkinan besar string teks diberikan akustik sinyal.

Isi

1 Ikhtisar Contoh 2 3 Extensions 4 Lihat juga 5 Referensi 6 Pranala luar

[Sunting] Ikhtisar
Asumsi yang tercantum di atas dapat dijabarkan sebagai berikut. Algoritma Viterbi yang beroperasi di negara mesin asumsi. Itulah sebabnya, setiap saat sistem sedang adalah model di beberapa negara. Ada yang menyatakan jumlah terbatas, namun besar, yang dapat terdaftar. Setiap negara diwakili sebagai node. Sequence dari beberapa negara (path) dapat mengakibatkan suatu negara, tetapi satu kemungkinan besar penyebabnya adalah path ke negara itu, yang disebut "survivor path". Ini adalah asumsi dasar dari algoritma karena algoritma akan memeriksa semua kemungkinan jalan yang mengarah ke negara dan hanya menyimpan satu kemungkinan besar. Dengan demikian, tidak ada algoritma untuk melacak semua kemungkinan path, hanya satu per negara. Kunci kedua adalah asumsi bahwa transisi dari sebelumnya negara ke negara yang baru yang ditandai oleh sebuah incremental metrik, biasanya angka. Transisi ini adalah computed dari kegiatan tersebut. Kunci yang ketiga adalah asumsi bahwa peristiwa adalah kumulatif atas jalan

dalam beberapa rasa, biasanya tambahan. Jadi pokok dari algoritma adalah untuk menyimpan nomor untuk masing-masing negara. Ketika sebuah event terjadi, memeriksa algoritma yang bergerak maju ke sebuah negara yang baru ditetapkan oleh kombinasi dari metrik yang sebelumnya mungkin negara dengan incremental metrik dari transisi karena acara dan memilih yang terbaik. Incremental metrik yang berkaitan dengan aktivitas tergantung pada kemungkinan transisi yang lama dari negara ke negara yang baru. Sebagai contoh, dalam komunikasi data, mungkin hanya mungkin untuk mengirimkan setengah simbol dari sebuah nomor ganjil dan negara lainnya setengah dari nomor bahkan negara. Selain itu, dalam banyak kasus negara transisi grafik tidak sepenuhnya terhubung. Sebuah contoh sederhana adalah mobil yang memiliki 3 negara - maju, stop dan mundur - dan transisi dari maju ke mundur tidak diperbolehkan. Ia harus terlebih dahulu memasukkan negara berhenti. Setelah komputasi kombinasi dari incremental metrik metrik dan negara, hanya survives terbaik dan semua jalur yang dibuang. Ada memodifikasi algoritma dasar yang memungkinkan untuk meneruskan pencarian di samping belakang dijelaskan di sini. Path sejarah harus disimpan. Dalam beberapa kasus, sejarah pencarian selesai karena negara di mesin encoder mulai dikenal di negara dan terdapat cukup memori untuk menyimpan semua jalur. Dalam kasus lain, sebuah program harus menemukan solusi untuk keterbatasan sumber daya: satu contoh adalah convolutional encoding, dimana decoder harus mencacati sejarah di kedalaman yang cukup besar untuk menjaga performa ke tingkat yang dapat diterima. Meskipun algoritma Viterbi sangat efisien dan ada modifikasi yang mengurangi beban komputer, memori persyaratan cenderung tetap konstan.

[Sunting] Contoh
Mempertimbangkan dua temannya, Alice dan Bob, yang tinggal berjauhan satu sama lain dan bersama-sama yang berbicara melalui telepon harian tentang apa yang mereka kerjakan pada hari itu. Bob hanya tertarik pada tiga kegiatan: jalan-jalan di taman, belanja, dan membersihkan apartemen itu. Pilihan apa yang harus dilakukan secara eksklusif ditentukan oleh cuaca pada hari tertentu. Alice pasti tidak memiliki informasi tentang cuaca di mana Bob hidup, tetapi dia mengetahui tren umum. Berdasarkan apa Bob memberitahu dia dia setiap hari, Alice mencoba menebak apa yang harus sudah cuaca seperti. Alice yakin bahwa cuaca beroperasi sebagai discrete Markov rantai. Ada dua negara, "Hujan" dan "Sunny", tetapi ia tidak dapat mengamati secara langsung, yaitu mereka yang disembunyikan dari dia. Pada setiap hari, ada beberapa kesempatan yang Bob akan melakukan salah satu kegiatan berikut, tergantung pada cuaca: "berjalan", "toko", atau "bersih". Alice sejak Bob memberitahu tentang kegiatan itu, orang-orang yang observasi. Seluruh sistem yang tersembunyi Markov model (Hmm). Alice mengetahui tren umum cuaca di wilayah tersebut, dan apa yang Bob senang melakukan ratarata. Dengan kata lain, parameter Hmm dikenal. Mereka dapat dituliskan dalam bahasa pemrograman Python:

status = ( 'Hujan', 'Sunny') observasi = ( 'berjalan', 'toko', 'bersih') start_probability = ( 'Rainy': 0.6, 'Sunny': 0,4) transition_probability = ( 'Rainy': ( ' Hujan ': 0,7,' Sunny ': 0.3),' Sunny ': (' Rainy ': 0,4,' Sunny ': 0.6),) emission_probability = (' Rainy ': (' berjalan ': 0.1,' shop ': 0,4 , 'bersih': 0.5), 'Sunny': ( 'berjalan': 0.6, 'shop': 0.3, 'bersih': 0.1),)
Dalam hal ini bagian dari kode, start_probability mewakili Alice dari kepercayaan tentang negara yang di dalam Hmm Bob ketika pertama panggilan dia (semua yang dia tahu adalah bahwa cenderung hujan rata-rata). Tertentu, probabilitas distribusi yang digunakan di sini adalah bukan satu keseimbangan yang (diberikan transisi probabilities) sebenarnya sekitar {'Rainy': 0.571, 'Sunny': 0.429} The transition_probability mewakili perubahan cuaca yang di rantai Markov. Dalam contoh ini, hanya ada 30% peluang bahwa besok akan cerah jika hari ini adalah hujan. The emission_probability mewakili bagaimana mungkin Bob adalah untuk melakukan aktivitas tertentu pada setiap harinya. Jika hujan, terdapat 50% kesempatan bahwa ia adalah

pembersihan apartemen dia, jika itu cerah, ada 60% kesempatan bahwa ia berada di luar untuk berjalan.

Alice to Bob tiga hari berturut-turut dan menemukan bahwa pada hari pertama dia pergi untuk berjalan kaki, pada hari kedua ia pergi berbelanja, dan pada hari ketiga dia dibersihkan-Nya apartemen. Alice mempunyai dua pertanyaan: Apakah keseluruhan probabilitas dari urutan observasi ini? Dan apa yang paling mungkin urutan hujan / hari yang cerah ini akan menjelaskan observasi? Yang pertama adalah menjawab pertanyaan dengan algoritma maju, yang kedua adalah menjawab pertanyaan dengan algoritma Viterbi. Kedua algoritma yang struktural sehingga serupa (dalam kenyataannya, mereka adalah contoh baik yang sama abstrak algoritma) yang mereka dapat diterapkan dalam satu fungsi:

def forward_viterbi (Obs, menyatakan, start_p, trans_p, emit_p): T = () untuk negara dalam negara: # # prob. V. V. jalur prob. T [negara] = (start_p [negara], [negara], start_p [state]) untuk output di Obs: U = () untuk next_state di menyatakan: argmax total = 0 = Kosong valmax = 0 untuk source_state di negara: (prob , v_path, v_prob) = T [source_state] p = emit_p [source_state] [output] trans_p * [source_state] [next_state] prob *= *= p v_prob p total + = prob jika v_prob> valmax: argmax = v_path + [next_state ] valmax = v_prob U [next_state] = (total, argmax, valmax) T = U # # berlaku rangkuman / max ke final menyatakan: argmax total = 0 = Kosong valmax = 0 untuk negara dalam negara: (prob, v_path, v_prob ) = T [negara] total + = prob jika v_prob> valmax: argmax = v_path valmax = v_prob kembali (total, argmax, valmax)
Fungsi forward_viterbi memerlukan argumen berikut: obs merupakan urutan observasi, misalnya ['walk', 'shop', 'clean'] states adalah kumpulan tersembunyi negara; start_p awal adalah kemungkinan; trans_p adalah transisi probabilities; dan emit_p adalah emisi probabilities. Algoritma yang bekerja pada pemetaan T dan U Masing-masing adalah pemetaan dari satu negara ke tiga (prob, v_path, v_prob) di mana prob adalah total dari semua kemungkinan path dari awal pada saat ini (dibikin oleh observasi), v_path adalah Viterbi jalan sampai sekarang negara, dan v_prob adalah probabilitas dari Viterbi jalan sampai saat ini. Pemetaan T berpendapat ini untuk informasi yang diberikan dalam waktu titik t, dan lingkaran utama constructs U yang

memuat informasi yang sama untuk waktu t 1. Karena dari Markov properti, informasi mengenai titik waktu sebelum t tidak diperlukan. Algoritma yang dimulai oleh Memulai T ke awal probabilities: total kemungkinan untuk negara hanyalah awal dari kemungkinan bahwa negara, dan Viterbi path untuk memulai sebuah negara yang hanya terdiri jalur tunggal itu negara; probabilitas dari Viterbi path sama dengan kemungkinan mulai. Utama lingkaran menganggap pengamatan dari obs dalam urutan. Its loop invariant adalah T berisi informasi yang benar tetapi tidak termasuk sampai titik waktu pada pengamatan. Algoritma yang kemudian computes triple (prob, v_path, v_prob) untuk setiap negara mungkin berikutnya. Total kemungkinan suatu negara berikutnya, total diperoleh dengan menambahkan probabilities di atas semua path yang mencapai negara. Lebih tepatnya, yang algoritma iterates atas segala kemungkinan sumber negara. Untuk setiap negara sumber, T memegang total kemungkinan semua jalur ke negara itu. Ini adalah kemungkinan kemudian dikalikan dengan emisi kemungkinan pada pengamatan dan transisi probabilitas dari sumber negara ke negara berikutnya. Yang dihasilkan kemungkinan prob ini kemudian ditambahkan ke total Probabilitas dari Viterbi adalah computed jalan dengan gaya yang sama, tetapi menambahkan satu jalur di semua melakukan discrete Maksimalisasi. Pada awalnya nilai maksimal valmax adalah nol. Sumber untuk setiap negara, kemungkinan dari Viterbi path ke negara yang dikenal. Hal ini juga adalah dikalikan dengan emisi dan transisi probabilities dan menggantikan valmax jika lebih besar dari nilai yang saat ini. The Viterbi jalan itu sendiri adalah sebagai computed yang sesuai argmax Maksimalisasi itu, dengan memperluas Viterbi jalan yang mengarah ke dalam negara dengan negara berikutnya. Triple (prob, v_path, v_prob) computed dalam mode ini akan disimpan dalam U dan sekali U telah computed semua kemungkinan untuk selanjutnya menyatakan, ia menggantikan T sehingga memastikan bahwa loop invariant berpendapat pada akhir perulangan. Pada akhirnya lain terakhir / Maksimalisasi dilakukan (ini juga dapat dilakukan di dalam lingkaran utama dengan menambahkan pseudo-pengamatan terakhir setelah nyata pengamatan). Dalam menjalankan contoh, maju / Viterbi algoritma yang digunakan sebagai berikut:

def contoh (): kembali forward_viterbi (observasi, menyatakan, start_probability, transition_probability, emission_probability) mencetak contoh ()
Hal ini menunjukkan bahwa total probabilitas dari ['walk', 'shop', 'clean'] adalah 0.033612 dan bahwa Viterbi adalah jalan ['Sunny', 'Rainy', 'Rainy', 'Rainy'] dengan kemungkinan 0,009408. Viterbi path yang berisi empat negara karena keempat pengamatan dibuat oleh negara yang ketiga dan keempat transisi ke negara. Dengan kata lain, berdasarkan pengamatan kegiatan, ia kemungkinan besar cerah ketika Bob pergi untuk berjalan kaki, dan kemudian mulai hujan pada hari berikutnya dan terus raining. Ketika menerapkan algoritma ini, perlu dicatat bahwa banyak menggunakan bahasa Floating Point aritmatika - sebagai p kecil, hal ini dapat mengakibatkan underflow dalam hasil. Umum untuk menghindari teknik ini adalah dengan mengambil logaritma dari probabilities dan menggunakannya di seluruh mesin, teknik yang sama yang digunakan dalam Sistem Logarithmic Pajak. Setelah algoritma telah dihentikan, nilai yang akurat dapat diperoleh dengan melakukan yang sesuai exponentiation.

[Sunting] Extensions
Disebut dengan algoritma Viterbi decoding yg berulang satu dapat menemukan subsequence dari pengamatan yang cocok terbaik (rata-rata) yang diberikan Hmm. Yg berulang Viterbi decoding karya yang dimodifikasi iteratively invoking algoritma Viterbi, reestimating skor untuk filler sampai konvergensi.

Alternatif algoritma, maka algoritma Viterbi Lazy, baru-baru ini telah diusulkan. Ini tidak bekerja dengan perluasan node apapun sampai benar-benar perlu, dan biasanya untuk mengelola pergi dengan melakukan banyak pekerjaan kurang (software) dibandingkan dengan algoritma Viterbi biasa untuk hasil yang sama - tetapi, tidak begitu mudah parallelize ke dalam perangkat keras .

[Sunting] Lihat juga



Baum-Welch algorithm Maju-mundur algoritma Memperbaiki kesalahan-kode Soft output algoritma Viterbi Viterbi decoder

[Sunting] Referensi
Andrew J. Viterbi. Kesalahan batas untuk convolutional kode dan asymptotically optimal decoding algoritma, IEEE Informasi Transaksi pada Teori 13 (2) :260-269, April 1967. (The Viterbi decoding algoritma dijelaskan dalam bagian IV.) GD Forney. The algoritma Viterbi. Proceedings of the IEEE 61 (3) :268-278, Maret 1973. LR Rabiner. J tutorial pada model Markov tersembunyi dipilih dan aplikasi dalam sambutannya pengakuan. Proceedings of the IEEE 77 (2) :257-286, Februari 1989. (Menggambarkan maju dan algoritma Viterbi algoritma untuk HMMs). J Feldman, saya abou Faycal dan F-Frigo. J-Cepat Maksimum Kemungkinan Decoder untuk Convolutional Codes.

[Sunting] Pranala luar


An pelaksanaan algoritma Viterbi di Perl Pelaksanaan yang berlainan dari algoritma Viterbi di Python Pelaksanaan yang ditunjukkan dalam algoritma Viterbi C # Pelaksanaan yang ditunjukkan dalam algoritma Viterbi C + + Pelaksanaan yang ditunjukkan dalam algoritma Viterbi C + + dan Boost Kategori: Kesalahan deteksi dan koreksi | Mesin belajar | Dynamic programming ini bahan dari Wikipedia adalah berlisensi di bawah GFDL (Disisipkan oleh aWiki). 2009 Hanum's Site Joomla! Is Free Software released under the GNU General Public License.

Teks asli berbahasa Inggris:

Viterbi algorithm
Sarankan terjemahan yang lebih baik

Anda mungkin juga menyukai