Bagaimana tepatnya menghitung Fungsi Kehilangan Q-Learning Jauh?

11

Saya ragu tentang bagaimana tepatnya fungsi kerugian dari Deep Q-Learning Network dilatih. Saya menggunakan jaringan feedforward 2 layer dengan lapisan output linear dan lapisan tersembunyi relu.

  1. Anggaplah saya memiliki 4 tindakan yang memungkinkan. Dengan demikian, output dari jaringan saya untuk keadaan saat ini adalah . Untuk membuatnya lebih konkret, mari kita asumsikanstQ(st)R4Q(st)=[1.3,0.4,4.3,1.5]
  2. Sekarang saya mengambil tindakan sesuai dengan nilai yaitu tindakan ke-3, dan mencapai status baru .at=24.3st+1
  3. Selanjutnya, saya menghitung lintasan maju dengan keadaan dan katakanlah saya mendapatkan nilai-nilai berikut pada lapisan keluaran . Juga katakanlah hadiah , dan .st+1Q(st+1)=[9.1,2.4,0.1,0.3]rt=2γ=1.0
  4. Apakah kerugian diberikan oleh:

    L=(11.14.3)2

    ATAU

    L=14i=03([11.1,11.1,11.1,11.1][1.3,0.4,4.3,1.5])2

    ATAU

    L=14i=03([11.1,4.4,2.1,2.3][1.3,0.4,4.3,1.5])2

Terima kasih, maaf saya harus menulis ini dengan cara yang sangat mendasar ... Saya bingung dengan semua notasi. (Saya pikir jawaban yang benar adalah yang kedua ...)

IKLAN
sumber
1
Pertanyaan ini dengan contoh yang jelas membuat saya memahami q dalam belajar lebih dari artikel media lainnya yang saya baca dalam seminggu terakhir.
dhruvm

Jawaban:

6

Setelah meninjau persamaan beberapa kali lagi. Saya pikir kerugian yang benar adalah sebagai berikut:

L=(11.14.3)2

Alasan saya adalah bahwa aturan pembaruan q-learning untuk kasus umum hanya memperbarui nilai-q untuk tertentu pasangan .state,action

Q(s,a)=r+γmaxaQ(s,a)

Persamaan ini berarti bahwa pembaruan hanya terjadi untuk satu tertentu pasangan dan untuk jaringan q saraf yang berarti kerugian dihitung hanya untuk satu unit output spesifik yang sesuai dengan tertentu .state,actionaction

Dalam contoh yang disediakan dan adalah .Q(s,a)=4.3targetr+γmaxaQ(s,a)=11.1

IKLAN
sumber
0
TLDR:

Mungkin tidak akan menjadi masalah kecuali Anda memiliki ruang aksi yang besar.

Jika fungsi kerugian Anda adalah MSE , maka kerugian yang dihitung adalah setengah dari kerugian spesifik istilah (jika ruang tindakan = 2). Ini mungkin penting jika ruang tindakan Anda besar dan dapat memperlambat pelatihan karena kemiringan fungsi kerugian dikurangi dengan faktor yang sama dengan ruang tindakan masalah Anda.

        next_q = self.model.predict(next_obss)
        next_q[np.where(dones)] = np.zeros([self.action_shape])

        qs = self.model.predict(obss)
        qs[range(len(qs)), actions] = rewards + GAMMA * np.max(next_q, axis=1)

        h = self.model.fit(obss, qs, verbose=0)

Seperti yang Anda sebutkan, hanya nilai q yang sesuai dengan tindakan saat ini yang dilakukan yang diperbarui. Oleh karena itu, pembilang kerugian tetap konstan.

Dengan asumsi ruang tindakan 2 (nilai yang mungkin: {0,1}).

L = 1/2[ Q - Q_old ]^2 # Capital implying Vector
L = 1/2[ (q_0 - q_old_0)^2 + (q_1 - q_old_1)^2]

Jika tindakan yang dipilih adalah 1maka nilai 0th tetap tidak berubah karena itu, membatalkan dan sebaliknya. Dengan demikian, semua ketentuan dibatalkan kecuali untuk tindakan yang saat ini dilakukan. Namun, penyebut akan terus meningkat sesuai ruang aksi.

Untuk ruang tindakan n = 2,

MSE(Q(s)) = 1/n * (squared error for Q(s,a))
EFreak
sumber