Mission Accomplished

merkhav

Akhirnya, setelah penantian panjang merkhavia berhasil menjawarai pencarian google dengan kata kunci “merkhavia”. Yeiy..berkahramadhan, hehe 😛
Semoga menjadi motivasi buat terus ngisi blog ini ya.. 😀

*ngutip dari postingan pertama

Jadi merkhavia ini awalnya ditemukan sebagai “merhavia” (מרחביה) yang (sepertinya) artinya adalah “penjuru dunia”, diambil dari bahasa hebrew. Kenapa bahasa hebrew? karena kami suka menggunakan ungkapan seperti heu, heuheu, dan hebrew.. *what a reason*
nah tapi, karena “merhavia” ternyata sudah occupied (nama kota di salah satu tempat, ga begitu terkenal juga sih kayaknya, kita juga awalnya ga tau), sehingga memperkecil peluang blog ini ditemukan di google dengan kata kunci itu, akhirnya kita (lo aja kali), melakukan modifikasi seenak udel, sehingga jadilah “merkhavia“… hehehe

**postingan super ga penting
***penting gitu
****iya deh, penting-penting

Para Filsuf di Meja Makan

Ciao Tutti!!!

Setelah tertimpa badai ujian hidup, akhirnya saya kembali muncul di sini, hahaha!!! Sebenernya judulnya ini adalah terjemahan dari kata “Dining Philosopher”, emang sih asa ga pantes banget pas diterjemahin, tapi ya udahlah. Ceritanya saya mesti ngambil kuliah dari departemen saya, trus saya beneran bingung mau ambil apa, karena banyakan emang ga nyambung sama riset saya, karena memang biasanya topik riset kan specialized banget. Walhasil saya mengambil kuliah dari Computer Science yang berjudul “Modeling Time in Computing”. Isi kuliahnya adalah seputar Petri Net, Automata, Transisi, dan Formalisme Logika. Asing? Lumayan sih sebenernya, tetapi tetep ada nyambung-nyambungnya sama Sistem Embedded kok. Tugas akhirnya adalah kami disuruh memilih beberapa permasalahan untuk dipecahkan solusinya gitu. Salah satu masalah yang saya pilih adalah masalah “Dining Philosophers” atau “Para Filsuf di Meja Makan” (dengan standar terjemahan yang rendah tentu saja :P). Idenya adalah seperti ini, coba liat gambar gagal di bawah ini.

Picture2

Sebelum saya deskripsikan permasalahannya, ada baiknya saya deskripsikan dulu gambar apakah di atas ini. Lingkaran besar adalah meja makan, 5 lingkaran kecil adalah piring, dan garis lurus adalah garpu. Oke, saya tahu, kalau saya tidak jelaskan sebelumnya pasti ga ada yang ngerti ini gambar apa #baper. 😦 Piring ini merujuk ke setiap filsuf juga. Setiap filsuf akan bergantian untuk makan dan berpikir. Syaratnya adalah, peristiwa makan hanya bisa dilakukan dengan kedua garpu di sebelah kanan dan kiri filsuf. Kebayang kan, dalam satu waktu maksimal hanya 2 filsuf yang bisa makan secara bersamaan. Ada 2 kondisi yang harus kita hindari.

1. Deadlock
Hal ini terjadi ketika dalam waktu yang bersamaan, semua filsuf mengambil garpu di sebelah kiri mereka atau di sebelah kanan mereka. Masing-masing filsuf hanya memiliki 1 garpu dan semuanya tidak bisa makan. Ketika mencapai state ini, masalah menjadi tidak bersolusi alias deadlock.

2. Starving
Kelaparan ini terjadi ketika penjadwalan untuk makan dan berpikir terjadi secara tidak seimbang. Misalnya waktu awal filsuf 3 dan filsuf 0 makan, waktu berikutnya filsuf 4 dan filsuf 2 makan, waktu berikutnya filsuf 3 dan filsuf 0 makan, dan seterusnya. Ada 1 filsuf yang sama sekali tidak mendapatkan jadwal untuk makan, yaitu filsuf 1. Pada peristiwa ini, filsuf 1 akan mengalami kelaparan dan hal ini merupakan hal yang tidak diinginkan untuk terjadi.

Solusi
Akan segera saya update. Hahaha. (gia)

Pemrosesan Sinyal dengan Statistik (3)

Kali ini saya lagi pengen bahas soal estimasi frekuensi, estimasi maximum likelihood, dan Cramer Rao Bound. Emang rada ga ada hujan ga ada angin sih (ga juga sih, di sini anginnya lagi kenceng banget), tapi saya sendiri lagi pengen bahas ini. Pokoknya pengen aja *naon pisan*. Mulai dari mana ya, dari definisi modelnya dulu saja. Berikut adalah model umum sebuah sistem, mungkin karena topiknya adalah pemrosesan sinyal dengan statistik, anggap saja bahwa ini adalah pemodelan sinyal, yang sebenarnya bisa digeneralisasi ke model yang lainnya juga.

y = Hx + n

dengan y adalah sinyal output (bisa dibahasakan juga menjadi observasi), H adalah model dari sinyal tersebut (sebagai contoh, bisa linear atau non linear), dan x adalah sinyal input (bisa dibahasakan juga sebagai parameter), dan n adalah derau (noise) yang merupakan sesuatu di luar model kita (semacam gangguan gitu), bisa diasumsikan sebagai derau putih a.k.a. additive white gaussian noise a.k.a. AWGN.

Anggap saja kita akan mengestimasi frekuensi dari sinyal sinusoidal. Berarti H merupakan pemodelan dari sinyal sinusoid yang bergantung pada frekuensi (\omega), sehingga agar lebih sesuai modelnya, kita definisi ulang persamaan di atas menjadi:

y = H\left( \omega \right ) x + n

Asumsikan bahwa H\left( \omega \right ) selalu terdiri dari fungsi cosinus dan fungsi sinus, yaitu:

H \left ( \omega \right )= \begin{bmatrix} c \left( \omega \right ) & s \left( \omega \right ) \end{bmatrix}

Pertama-tama kita lakukan optimasi terpisah antara x dan \omega dengan melakukan optimasi terhadap x terdahulu. Saya suka bagian ini karena asyik sekali. Yuhuyyy. Optimasi dilakukan dengan metode Maximum Likelihood Estimation (MLE), yaitu mencari nilai x yang membuat fungsi Maximum Likelihood (ML) menjadi maksimal. Fungsi Likelihood sendiri merupakan Probability Density Function (PDF) dari y diketahui x. Karena fungsinya monoton, untuk mempermudah perhitungan biasanya fungsinya dibuat ke dalam bentuk log, yaitu fungsi Log-likelihood. Bagaimanakah fungsinya? Jengjeng. Oh iya, sebelumnya PDF suatu model tergantung dengan jenis noise-nya juga, karena kebetulan noise di sistem ini adalah AWGN, maka fungsi yang saya pakai adalah fungsi ini. Mungkin kalau jenis noise-nya lain, ya PDF-nya akan lain juga. Loh kenapa jadi ngomongin noise? Yeah, karena ketika kita mengisolasi observasi dari independensi terhadap parameter, yang tersisa hanyalah noise, yaitu:

y-H\left(\omega \right)x = w

Sekarang mari kita mulai dari analisis fungsi Log-likelihood, yang sebelumnya kita observasi PDF dari y diketahui x.

p( y|x) = \frac{1}{2\pi^{\frac{N}{2}}} \frac{1}{|C_{w}|^{\frac{1}{2}}}exp\{-\frac{1}{2} [y-H(\omega)x ]^{T} C_{w}^{-1}[y-H( \omega )x] \}

Wah, ribet bingits ternyata. Itulah gunanya fungsi Log-likelihood, yaitu melakukan simplifikasi terhadap keribetan di atas menjadi:

L(x|y) = p(y|x)

L(x|y) = -\frac{N}{2}ln2\pi - \frac{1}{2}ln|C_{w}|-\frac{1}{2}[y-H(\omega)x]^{T}C_{w}^{-1}[y-H(\omega)x]

Setelah itu, untuk mencari nilai x yang membuat fungsi Log-likelihood-nya maksimal, kita harus menghilangkan semua variable yang tidak relevan dengan x, seperti konstanta-konstanta, sehingga menjadi:

arg \underset{x}{max}L(x|y)=arg\underset{x}{min}[y-H(\omega)x]^{T}C_{w}^{-1}[y-H(\omega)x]

Kok max-nya jadi min? Iya, karena nilai x-nya kan jadi pengurangan, berarti kalau mau nilainya makin fungsi likelihood-nya semakin besar, nilai x-nya harus semakin kecil dong. Lanjut.

arg\underset{x}{min}[y-H(\omega)x]^{T}C_{w}^{-1}[y-H(\omega)x]=arg\underset{x}{min}[y^{T}C_{w}^{-1}y^{T}-x^{T}H(\omega)^{T}C_{w}^{-1}y-y^{T}C_{w}^{-1}H(\omega)x+x^{T}H(\omega)^{T}C_{w}^{-1}H(\omega)x]=arg\underset{x}{min}[y^{T}C_{w}^{-1}y^{T}-2x^{T}H(\omega)^{T}C_{w}^{-1}y+x^{T}H(\omega)^{T}C_{w}^{-1}H(\omega)x]

Seperti biasa, untuk mencari nilai maksimal atau minimal suatu fungsi, bisa kita lakukan penurunan terhadap variabel yang kita inginkan, yaitu x dan disamadengankan 0. Setelah diturunkan, fungsi tersebut menjadi:

-2H(\omega)^{T}C_{w}^{-1}y+2H(\omega)^{T}C_{w}^{-1}H(\omega)x=0

x=(H(\omega)^{T}C_{w}^{-1}H(\omega))^{-1}H(\omega)^{T}C_{w}^{-1}y

Ketemu deh nilai x yang bisa membuat fungsi Log-likelihood-nya menjadi maksimal.

Setelah ketemu nilai x-nya, kita masukkan ke dalam persamaan Log-likelihood-nya, sehingga menjadi:

L(x|y) = -\frac{N}{2}ln2\pi - \frac{1}{2}ln|C_{w}|-\frac{1}{2}[y-H(\omega)(H(\omega)^{T}C_{w}^{-1}H(\omega))^{-1}H(\omega)^{T}C_{w}^{-1}y]^{T}C_{w}^{-1}[y-H(\omega)(H(\omega)^{T}C_{w}^{-1}H(\omega))^{-1}H(\omega)^{T}C_{w}^{-1}y]

Dijamin pusing, hehe. Engga juga kok, kita bisa melakukan beberapa simplifikasi, yaitu dengan mengasumsikan H(\omega)(H(\omega)^{T}C_{w}^{-1}H(\omega))^{-1}H(\omega)^{T}C_{w}^{-1} sebagai projection matrix P(\omega) dengan sifat P(\omega)^{2}=P(\omega). Sebelum makin rempong cyin, kita bisa melakukan simplifikasi lagi terhadap projection matrix tersebut karena noise-nya adalah AWGN, sehingga, projection matrix menjadi P(\omega)=H(\omega)(H(\omega)^{T}H(\omega))^{-1}H(\omega)^{T} dan faktor C_{w}^{-1} bisa dihilangkan dari fungsi Log-likelihood karena menjadi konstanta. Sehingga optimasi terakhir kita adalah (dengan menghilangkan segala macam konstanta yang tidak relevan):

arg \underset{\omega}{max}L(x|y)=arg \underset{\omega}{min}[y-P(\omega)y]^{T}[y-P(\omega)y]

arg \underset{\omega}{max}L(x|y)=arg \underset{\omega}{min}[y(I-P(\omega))]^{T}[y(I-P(\omega))]

Bentuk di atas dapat dijabarkan menjadi bentuk quadratic seperti di bawah ini.

arg \underset{\omega}{max}L(x|y)=arg \underset{\omega}{min}[y^{T}(I-P(\omega)-P(\omega)+P(\omega))y]

arg \underset{\omega}{max}L(x|y)=arg \underset{\omega}{min}[y^{T}(I-P(\omega))y]=arg \underset{\omega}{min}[y^{T}P(\omega)y]=arg \underset{\omega}{min}[y^{T}P(\omega)y]=arg \underset{\omega}{min}[tr\{P(\omega)yy^{T}\}]

Jadi \omega_{ML}=arg \underset{\omega}{min}[tr\{P(\omega)yy^{T}\}]. Sebenarnya arti harafiah dari nilai maximum likelihood adalah nilai dimana suatu kejadian memiliki peluang yang paling besar untuk terjadi. Nilai \omega agar fungsinya maksimum adalah seperti persamaan di atas. Berarti kita semua sudah bisa mengestimasi frekuensi ya. Yay! Selanjutnya adalah mengecek nilai frekuensi tersebut dengan metode Cramer Rao Bound, sehingga kita memiliki nilai estimasi yang efisien.

P.S.: Rehat dulu bentarrr >_< (gia)

Selingan: Membaca Paper

Semua pasti sudah menyadari tentang hukum kekekalan (massa atau energi, yang sebenarnya saya kurang tahu masih valid atau tidak). Hukum-hukum tersebut tidak jauh dari output =  input. Well, kalau mau banyak output, ya harus banyak input. Seringkali kita dihadapkan dengan keharusan pilihan untuk banyak-banyak menulis. Sebenarnya saya belum di fase harus banyak menulis, namun saya sedang memulai untuk rajin membaca, di mana untuk orang-orang seperti saya, membaca yang berat-berat bukan sebuah kebiasaan saya sejak kecil. Lain halnya dengan rekan saya yang satunya, yang itu tuuuh. Baginya, membaca memang sudah kewajiban kebiasaan semenjak kecil, sehingga ketika dihadapkan pada paper dan jurnal yang berjibun, ah cincay baday. Iri. Banget.

Akhirnya, saya mulai menghadapi kenyataan untuk membaca banyak paper (yang sebenarnya jurnal sih) karena saya tidak mempunyai pilihan lain. Pertama kali harus menghadapi tantangan ini, di tengah-tengah membaca jurnal selalu timbul rasa bosan dan ngantuk. Hal itu saya sadari karena saya tidak memiliki kemauan yang besar maupun pemahaman apa-apa soal isi jurnal tersebut. Mulai bosan dengan kebosanan saya membaca jurnal, saya merasa saya harus menemukan cara agar saya bisa memahami jurnal-jurnal tersebut. Oke. Fokus. Pertama harus fokus dan tanamkan rasa ingin tahu yang tinggi dalam diri kita, baca dengan teliti dan hati-hati. Jangan sampai ada pengetahuan yang tertinggal. Kata profesor saya, kata-kata yang ditulis dalam jurnal itu memang ditulis dengan alasan, bukan untuk di-skip. Oke, Prof. Siap grak. Sebelumnya, ada baiknya kita meninggalkan semua hal duniawi seperti media sosial agar pikiran tetap fokus dan tidak mudah terdistraksi. Buat diri kita senyaman mungkin dalam membaca jurnal. Mulai membaca. Kepikiran hal lain-lain seperti sudah mematikan kompor apa belum, sekarang jam berapa, nanti makan siang apa, ingin mengecek email? Wajar. Abaikan, sesungguhnya itu bisikan setan *halah*. Kembali ke layar laptop. Terus membaca dan membaca, hingga akhirnya kita benar-benar ingin tahu soal jurnal tersebut. Salah satu ciri-ciri bahwa kita mulai tertarik dengan isi jurnal adalah, setiap menemukan [1], [2], [3], dan seterusnya, kita akan segera ke referensi/bibliography, dan mencari paper/jurnal tersebut, kemudian membacanya, terus, terus, seperti rantai setan *tidak perlu semuanya sih, yang penting saja mungkin ya*.

Oke, sampailah pada kesimpulan: “the more I study, the more I realize that I understand nothing”. Ingin menyerah? Sebenarnya iya. Namun terkadang rasa ingin tahu mengalahkan rasa ingin menyerah itu, haha. Sekian. (gia)

Komunikasi Digital (1)

Yak, ini adalah salah satu kelas master yang mesti saya ikuti, hiksss. Ga enaknya lagi jadwal kuliahnya pagi-pagi banget, komparasinya sama aja di Indonesia kuliah jam 6 pagi T.T makanya pertemuan pertama skip akibat err, gatau kalau mulai kuliahnya minggu kemaren, ahahaha. Failed? Superrr. Dan begitu masuk kuliah pertama (yang sebenernya pertemuan kedua), saya langsung ‘disuguhi’ judul: Geometrical Representation of the Signal. Dueng!!! Asa baru denger yang ginian selama hidup. Logis banget sih, tapiii, ide ini terlalu keren sumpahhh. Walaupun bab ini sebenernya ada juga di buku kuliahnya Bu Andrea Goldsmith yang super keren. Anyway, jangan pernah nyoba masuk kelas ini kalau masih 0 sama aljabar linear, bukannya gimana-gimana sih, tapi masa yang diomongin tiba-tiba subspace, basis, dan linear independence. Lah itu kalau saya sebulan lalu ga baca-baca soal aljabar linear pastilah ga ngerti apa-apa banget haha. Saya juga pengen sih nulis sedikit tentang aljabar linear di merkhavia, namun… *lalu php* Tapi beneran keren, bab Geometrical Representation of the Signal ditaruh di awal itu beneran ide yang bagus, soalnya kita jadi kebayang ruang sinyal itu seperti apa, hehe.

Pertama, sinyal dalam bentuk waveform di ruang waktu merepresentasikan titik di ruang sinyal. Kayaknya mesti dikasih definisi nih *yaeyalah*. Hmmm… Saya pengen ngasih contoh sih dengan menggunakan konstelasi 8-PSK (8-Phase Shift Keying). Kuncinya adalah ada 8 titik pada ruang sinyal yang memiliki amplitude yang sama, hanya dibedakan oleh fasenya saja. Misalnya kita punya himpunan sinyal yang terdiri dari 8 waveform, yaitu:

\left \{ s_{1}\left(t\right), s_{2}\left(t\right), ... , s_{8}\left(t\right) \right \}

s_{k}\left(t\right)=\sqrt{\frac{2}{T}}.rect\left(\frac{t}{T}\right).cos\left(\frac{2 \pi t}{T}+ \frac{k \pi}{4}\right), k =1,2,...,8

Serta memiliki basis orthonormal, yaitu:

\left \{\phi_{1}\left(t\right) = \sqrt{\frac{2}{T}}.rect \left(\frac{t}{T}\right).cos \left(\frac{2 \pi t}{T}\right), \phi_{2}\left(t\right) = \sqrt{\frac{2}{T}}.rect \left(\frac{t}{T}\right).sin \left(\frac{2 \pi t}{T}\right)\right \}

Merasa asing ga dengan istilah basis orthonormal? Awalnya saya juga lho. Tetapi istilah ini merupakan istilah dasar di kuliah aljabar linear, istilah yang super penting. Jadiii, kita uraikan satu per satu kata-katanya. Haha, basis dan orthonormal.

Basis
Basis adalah himpunan dari vektor yang linear independen, yang pada kombinasi linearnya dapat merepresentasikan seluruh vektor pada ruang vektor yang diberikan/didefinisikan? Wait wait, ini kok horror amat ya pake istilah linear independen segala? Apa sih linear independen itu? Jadi gini deh *berhubung bakal ribet banget kalau pakai digambar segala, saya mengajak pembaca untuk membayangkan saja*, misalkan kita punya 2 vektor \begin{pmatrix}2\\ 0\\ 0\end{pmatrix} dan \begin{pmatrix}0\\ 2\\ 0\end{pmatrix}. Berarti? Vektor tersebut berada pada ruang 3 dimensi (simply karena vektor tersebut berukuran 3×1) dan membentuk bidang xy di z=0. Kedua vektor tersebut linear independen, sehingga dapat membentuk bidang xy di sepanjang z=0. Nah, sekarang kita tambahkan satu vektor lagi, yaitu \begin{pmatrix}4\\ 4\\ 0\end{pmatrix}, apakah vektor tersebut merupakan basis? Tentu bukan, karena vektor tersebut merupakan kombineasi linear dari vektor \begin{pmatrix}2\\ 0\\ 0\end{pmatrix} dan \begin{pmatrix}0\\ 2\\ 0\end{pmatrix}, sehingga tidak membentuk ruang baru dan tetap berada di bidang xy, sehingga dapat dikatakan bahwa himpunan vektor \begin{pmatrix}2\\ 0\\ 0\end{pmatrix}, \begin{pmatrix}0\\ 2\\ 0\end{pmatrix}, dan \begin{pmatrix}4\\ 4\\ 0\end{pmatrix} merupakan himpunan vektor yang linear dependen, simply karena salah satu vektornya merupakan kombinasi linear dari kedua vektor lainnya *aduh ini kesannya sotoy banget ya saya bukan anak matematika tapi ngomongin beginian*. Jadi, vektor dapat dikatakan basis dari ruang vektor apabila vektor tersebut merupakan komponen vektor minimum untuk membentuk ruang vektor tersebut yang bersifat linear independen *tsah, mbulet amat*.

Orthonormal
Well, orthonormal itu sebenarnya gabungan antara orthogonal dan normal, maksudnya berarti vektornya saling tegak lurus dan ternormalisasi. Misalnya kedua vektor yang kita bahas sebelumnya, yaitu \begin{pmatrix}2\\ 0\\ 0\end{pmatrix} dan \begin{pmatrix}0\\ 2\\ 0\end{pmatrix}, merupakan vektor yang orthogonal alias tegak lurus tetapi BUKAN orthonormal. Terus, seperti apakah vektor orthonormal itu? Ya, kedua vektor tersebut sudah orthogonal dan perlu finishing step yaitu, jeng jeng, normalisasi menjadi \begin{pmatrix}1\\ 0\\ 0\end{pmatrix} dan \begin{pmatrix}0\\ 1\\ 0\end{pmatrix}. Yatta! Haha, pokoknya inget aja deh kalau ada kata normal atau normalisasi, angka-angkanya ga jauh jauh dari atau maksimal 1 lah ya.

Kebayang ga kira-kira sinyalnya? Kuncinya kalau pengen kebayang sih, ganti aja t (huruf kecil) dengan angka, misalnya 1-10 ya. Ntar bisa kita plot satu per satu gambarnya. Duh sesungguhnya jujur dari lubuk hati yang terdalam, saya pengen loh plot satu2, tapiii…

P.S.: Gantung dulu bentar yakkk, kalau interest silahkan di-follow, insyaAllah di-update terus hehe (gia)

Probabilistic Robotics: Introduction

Halo, sedikit sharing tentang salah satu mata kuliah yang sedang hangat di sini: Probabilistic Robotics

Oke, apa sih ini ilmu probabilitas robotics?

Sederhananya, ini adalah ilmu mengaplikasikan ilmu probabilitas ke dalam robotika.

Mengapa harus ada ilmu probabilitas dalam robotika?
Simpelnya, dalam dunia ini kan tidak ada yang pasti, bahkan indera manusia saja banyak yang suka salah sangka. Apalagi sensor robot? Dengan ilmu probabilitas ini, kita jadi bisa mengukur seberapa besar keyakinan kita terhadap pencitraan robot.

Sensor robot memangnya suka salah sangka?
Betul! bahkan sensor yang mahal sekalipun seperti sensor laser. Bisa saja kita menghitung jarak dari sini ke suatu titik, yaitu jarak X, namun ternyata aslinya bukan X karena sebenarnya laser tersebut menembus permukaan kaca, jadi dia menganggap jarak yang dideteksi itu lebih jauh.
Di sini lah ilmu probabilitas robotika berperan. Kita bisa menganalisa data dan dari analisa tersebut, kita bisa tahu seberapa besar keyakinan kita terhadap data tersebut.
Pada kasus tersebut, kita bisa menganalisa dari data sensor laser tersebut yang menembus permukaan kaca, sehingga kita berikan keyakinan yang rendah terhadap pembacaan sensor itu.

kenapa harus yakin ? memangnya kenapa gak bisa langsung aja percaya dengan pembacaan data sensor itu?
Ya nggak lah! seandainya kamu naik pesawat yang pembacaan sonar nya cuma memiliki keyakinan 40% bahwa di depan sana tidak ada gunung, apa kamu tidak khawatir? berarti 60% nya yakin kan kalo di depan ada gunung? Tentu hal ini amat membahayakan penumpang

Oh, oke, jadi manfaatnya ilmu ini apa?
Dengan sensor yang standard seperti sensor ultrasonik, bukan sensor super mahal seperti laser, kita bisa mendapatkan hasil pencitraan yang akurat karena kita bisa memilih hasil dengan keyakinan yang tinggi, dan hasil ini amat membantu kita dalam memutuskan langkah apa yang akan diambil si robot setelahnya.

Oke, saya dapat idenya, implementasi ke lebih technical nya gimana?
Banyak implementasi dari ilmu ini yang sudah diaplikasikan. Karena kita bisa mengukur keyakinan kita akan suatu pembacaan sensor, dengan mengakumulasikan pembacaan tersebut kita bisa menggunakannya dalam berbagai aplikasi seperti mapping dan localization seperti localization monte-carlo, particle filtering, online learning, atau SLAM.

Ada contoh lain gak? Riset terkini di bidang ini apa sih?
Google Driverless Car intinya adalah aplikasi ilmu ini. Professor yang terkemuka di bidang ini adalah Sebastian Thrun, dia adalah professor Stanford & CMU yang merancang Stanford Driverless Car yang memenangkan Darpa Challenge pada tahun 2005. Dia juga yang memimpin riset driverless car di Google.

Wow gokil! ada referensi lain nggak?
Ada, Sebastian Thrun punya web site juga http://www.probabilistic-robotics.org/
Kalo mau belajar lebih mendalam, ini PDF bukunya: http://people.ufpr.br/~danielsantos/ProbabilisticRobotics.pdf

Oke udah kebayang kan ide awalnya ini seperti apa?
Nanti dilanjutkan dengan pembahasan yg lebih mendalam ya 😀

Meja Makan, Frobenius, dan Gershgorin

Halo semua, saya orang ketiga di blog ini. Salam kenal.

Beberapa minggu yang lalu (*hampir sebulan mungkin), rekan saya memberikan sebuah contoh yang cukup menarik dalam tulisannya tentang Pemrosesan Sinyal Statisik, yaitu masalah power di meja makan. Di post saya yang pertama ini, saya ingin mencoba menuliskan cara saya *menyerang* masalah tersebut.

Berikut adalah problem statement dari masalah power tersebut. Misalkan G adalah matriks dengan g_{ii} = 0 untuk semua i dan g_{ij} \ge 0 untuk semua i \ne j. Kita ingin menentukan pasangan eigenvalueeigenvector (\lambda, P) dengan 0 < \lambda \le 1 dan p_k positif untuk setiap k sedemikian sehingga GP = \lambda P.

Kesan pertama saya saat membaca problem statement di atas adalah masalah ini masih terlalu umum. Informasi yang bisa kita gunakan dari problem statement ini masih terlalu sedikit. Mari kita coba lebih menyederhanakan masalah ini.

Pertama, karena g_{ij} adalah channel gain antara grup i dan grup j, saya rasa masuk akal jika kita asumsikan bahwa g_{ij} = g_{ji} untuk kasus meja makan (grup i dan grup j berkomunikasi melalui “udara” yang sama). Dalam bahasa matriks, asumsi ini berarti matriks G adalah matriks real yang simetrik, atau G^T = G.

Yang kedua, lagi – lagi karena kita berada di meja makan, rasanya masuk akal juga jika kita asumsikan bahwa jika saya saat ini ada di suatu grup, saya dapat menyampaikan pesan ke semua grup lainnya, walaupun pesan tersebut mungkin harus melewati lebih dari satu grup sebelum sampai ke grup yang saya tuju. Sebagai contoh, misalkan grup i ingin berkomunikasi dengan grup j, mungkin saja grup i harus  menyampaikan pesan ke grup k yang diteruskan ke grup l dan baru kemudian sampai di grup j. Yang terpenting, setiap grup dapat berkomunikasi dengan grup lainnya walaupun secara tidak langsung. Dalam bahasa graph, asumsi ini berarti graph untuk grup di meja makan adalah graph yang terhubung kuat atau strongly connected.

Dengan menambahkan dua asumsi ini, kita memiliki cukup informasi untuk menyelesaikan masalah ini. Jadi, masalah ini sekarang berbunyi sebagai berikut. Misalkan G adalah matriks simetrik dengan g_{ii} = 0 untuk semua i dan g_{ij} \ge 0 untuk semua i \ne j. Selain itu, graph grup – grup yang akan berkomunikasi adalah adalah graph yang terhubung kuat (strongly connected). Kita ingin menentukan pasangan eigenvalueeigenvector (\lambda, P) dengan 0 < \lambda \le 1 dan p_k positif untuk setiap k sedemikian sehingga GP = \lambda P.

Nah, pertanyaannya sekarang, kita mau mulai dari mana? Ada baiknya kita mulai dari eksistensi \lambda. Apakah persamaan GP = \lambda P ini memiliki solusi untuk \lambda \in R atau apakah G memiliki eigenvalue real? Untungnya, asumsi tambahan kita yang pertama menjamin bahwa persamaan GP = \lambda P memiliki solusi untuk \lambda \in R atau matriks G memiliki eigenvalue real. Matriks simetrik real (atau Hermitian untuk kasus kompleks) memiliki eigenvalue real. Jadi, pertanyaan ini sudah dijawab oleh asumsi tambahan kita yang pertama.

Akan tetapi, kita tidak hanya ingin \lambda \in \mathbb{R}, kita juga ingin \lambda positif.  Enter Teorema Perron-Frobenius.  Ada dua versi dari teorema ini: versi untuk matriks positif (semua elemen matriks ini harus positif) dan versi untuk matriks non-negatif (semua elemen matriks ini harus lebih besar atau sama dengan 0). Karena elemen pada diagonal matriks G bernilai 0, kita harus menggunakan Teorema Perron-Frobenius versi matriks non-negatif.

Akan tetapi, ada hipotesis tambahan untuk Teorema Perron-Frobenius versi kedua ini, yaitu matriks G haruslah matriks irreducible. Ada banyak definisi ekivalen untuk matriks irreducible, tapi yang akan saya gunakan di sini adalah definisi keempat pada tautan di atas: bahwa graph yang diasosiasikan dengan matriks G haruslah terhubung kuat atau strongly connected. Untungnya, ini adalah asumsi tambahan kita yang kedua. Jadi, G memenuhi hipotesis tambahan untuk Teorema Perron-Frobenius. Dengan menggunakan Teorema Perron-Frobenius, kita mendapatkan dua hasil: spectral radius \rho(G) positif, dan satu-satunya eigenvector positif G adalah eigenvector v dengan eigenvalue \rho(G). Kita tidak hanya mendapatkan eksistensi \lambda positif, kita juga mendapatkan solusi positif unik, yaitu pasangan eigenvalue-eigenvector (\rho(G), v).

Sayangnya, ini semua masih belum cukup. Kita menginginkan lebih dari sekedar \lambda positif. Yang kita inginkan adalah \lambda \in (0, 1]. Dari paragraf sebelumnya, kita mengetahui bahwa satu – satunya pasangan eigenvalue-eigenvector dengan eigenvector positif adalah pasangan (\rho(G), v). Artinya, kita ingin \rho(G) \in (0, 1], atau kita ingin nilai eigenvalue maksimum dari matriks G untuk terbatas dari atas dengan batas atas 1. Jika berhubungan dengan batas atas dan batas bawah dari nilai eigenvalue, teorema yang bisa kita gunakan adalah Teorema Lingkaran Gershgorin atau Gershgorin’s Circle Theorem.

Karena seluruh elemen diagonal dari matriks G bernilai 0, semua lingkaran Gershgorin untuk matriks G memiliki pusat di (0, 0). Dengan kata lain, untuk membatasi nilai eigenvalue dari matriks G, kita cukup membatasi jari – jari lingkaran Gershgorin terbesar sehingga jari – jari lingkaran Gershgorin ini tidak lebih dari 1. Dari definisi jari – jari lingkaran Gershgorin, ini berarti untuk setiap baris i pada matriks G, nilai \sum_j g_{ij} tidak lebih besar dari 1. Jika persyaratan ini dipenuhi, maka \rho(G) pun tidak lebih besar dari 1. Dan sampai di sini, kita sudah dapat memberikan solusi untuk masalah power di meja makan ini.

Kita bisa berhenti sampai di sini, tapi mari lanjutkan sedikit lagi. Kita memang sudah dapat memberikan solusi (yang cukup umum) untuk masalah ini, tetapi adakah kasus spesial untuk masalah ini? Adakah kasus yang cukup spesial sehingga kita dapat menemukan pasangan eigenvalueeigenvector dalam bentuk closed form? Kalau ada yang punya ide, mangga di-share di komen :D.

[ravi]

Kontrol Stokastik – Part 1: Prediksi

Beberapa minggu terakhir (dengan terpaksa) saya terpapar ilmu stokastik. Jadi ceritanya di lab saya ada yang namanya book reading session, dimana tiap minggu kita ganti-gantian presentasiin isi buku dan bukunya ini diharapkan beres selama satu semester.
Alkisah semester ini kita membahas buku “Introduction to Stochastic Control“..mew..bukan saya yang milih loh ya, semua hak prerogatif profesor saya.
*btw, entah kenapa setiap denger stokastik yang seketika kebayang di otak saya malah bunyi yang keluar dari mukul2in stik ke gelas kaca *siapa sih yang menanamkan insepsi sesat kayakgini
Tapi stokastik itu bukan kayak gitu kok (yakali, lo doang kali yang mikir gitu). Stokastik itu apa ya, kayak sesuatu yang penuh dengan ketidakpastian (udah kayak kehidupan aja..haha), random (nah kalo ini pikiran saya yang suka random 😛 ), ada probabilitas-probabilitasnya, yang gitu-gitu deh
*duh maafkan saya yang terlalu failed ketika membuat definisi 😥

Nah minggu kemaren, di lab saya ngebahas gimana cara memprediksi output dari proses stokastik, dan bagaimana kita mendesain kontrol yang bisa membuat output proses stokastik kita memiliki variance minimum (jadi outputnya ga gujlek gujlek gitu *bahasa apa ini*).

Karena sebelumnya disini udah ada yang nyentil-nyentil masalah prediksi dari sisi signal processing, kayaknya seru deh kalo ada juga yang nulisnya dari point of view-nya stochastic control 😀
*walopun kayaknya case nya rada beda sih..hehe
*tapi maaf ya kalo tulisannya rada cupu dan banyak gagal pahamnya..hebrew << tuh kan,itulah mengapa kita menamai blog ini “merkhavia” 😛
Continue reading

Pemrosesan Sinyal dengan Statistik (2)

24-09-2014

Yak, masih belom ganti hari, tapi saya bikin baru aja deh, kok kayaknya banyak banget yang pengen ditulis, haha. Update: ternyata setelah disindir di ruang publik *engga karena ini juga sih sebenernya, maksud saya ga kausal juga kok ahahaha*, rekan saya langsung konkret nulis, udah gitu yang susah2 pulak, aaakkk. Baiklah setidaknya harus tuntaslah bagian ini *ceritanya ga mau kalah*.

Okay, saya ingin mengawali konsep bias dan variance yang bahkan saya baru paham benar sekarang T.T *ngapain aja dulu mbak pas kuliah*. Ini kaitannya sama performa estimator. Bentar2, kok tiba2 ngomongin estimator ya? Yap, ini berkaitan sama postingan saya sebelumnya tentang mengestimasi parameter-parameter yang tidak diketahui. Namanya estimasi juga ga mungkin 100% akurat kan ya, jadi harap dimaklumi saja. Sekian. *ditabok*

Well, tapi kita masih punya kesempatan lhooo untuk meminimalisasi error antara hasil estimasi dengan hasil aktual. Semakin mendekati berarti semakin akurat *yudonsei sih ini ya*.
Continue reading