ขั้นตอนในการเรียนรู้ policy ที่ดีใน reinforcement learning นั้น มักจะประกอบไปด้วยสองส่วน หนึ่ง คือส่วนที่เรียกว่า prediction ก็คือส่วนที่ตอบว่า “ถ้าเราเดินไปตามเส้นทางนี้ แล้วจะดีขนาดไหน” นั่นก็คือ “คาดการณ์” (prediction) ค่าของ และหรือ

อีกส่วนหนึ่งก็คือส่วนที่เรียกว่า control ถ้าเรามีข้อมูลเหล่านี้ () หรือไม่มี จะสามารถหา policy ที่ดีได้อย่างไร ในกรณีของ GPI (Generalized Policy Iteration) นั้น control (การหา policy ที่ดี) นั้นอาศัยการ prediction ที่ดีมาก่อนด้วย นั่นทำให้ในหลาย ๆ ครั้งเราถือว่า prediction กับ control เหมือนกับสองส่วนที่ขาดจากกันไม่ได้

ในที่นี้เราพูดถึงโจทย์ prediction เป็นหลัก โดยเฉพาะเราพูดถึงการ predict ค่า โดยที่เราไม่มีประสบการณ์จากการเล่น policy เลย แต่เราได้ประสบการณ์จากาแหล่งอื่น ๆ แทน เราเรียกแหล่งนั้นว่า behavioral policy หรือ

จะเป็นไปได้ไหม หรือต้องทำอย่างไรเราถึงจะได้ ในเมื่อเรามีแต่ประสบการณ์จาก ?

โจทย์นี้มีชื่ออย่างเป็นทางการว่า Off-policy prediction ก็เพราะว่าประสบการณ์ที่เรามีมัน off ไปจาก policy

ก่อนที่จะไปต่อ กล่าวก่อนว่า off-policy prediction นั้นก็ไม่ได้มีสูตรสำเร็จ แต่ละวิธีก็อาจจะมีจุดแข็งจุดอ่อนของตัวเอง (เหมือนกับทุกอย่างใน RL) แต่เนื่องจาก off-policy prediction นั้นยากกว่า on-policy prediction (กรณีที่ไม่มี ) มาก ดังนั้นงานวิจัยในด้านนี้ก็ยังไม่เจริญเท่า

เพราะฉะนั้นในบทความนี้เราก็อาจจะพูดแบบเกริ่น ๆ วิธีที่มีมานานแล้วของการทำ off-policy prediction ไปก่อนซึ่งในที่นี้เราจะเสนอไอเดียที่เรียกว่า Importance Sampling ซึ่งเป็นเทคนิคทางสถิติ ซึ่งเข้าใจได้ง่ายแม้จะไม่ได้เข้าใจ RL มากเท่าไหร่

On-policy prediction

ในกรณีที่ คือ กล่าวคือ สำหรับทุก ​ เราจะได้ว่า เราสามารถแก้โจทย์ prediction ด้วยวิธีการแบบ Monte Carlo นั่นก็คือ

แปลเป็นภาษาไทยก็คือ เราสามารถหาค่า ได้ (prediction) ด้วยการใช้ประสบการณ์จำนวนมากมาหาค่า “คาดหวัง” โดยมีเงื่อนไขว่าประสบการณ์จะต้องมาจาก policy เท่านั้น

ข้อสังเกต: เราทำการ sample หลายครั้งจนกว่าจะจบ episode

เพื่อความง่ายเราจะกำหนด โดยเราเรียก ว่า return อาจจะแปลได้ว่า ค่าทดลองการเล่น (จากการเล่น 1 ครั้งจนจบ แล้วรวมรางวัลที่ได้ทั้งหมด)

โจทย์ในที่นี้สำหรับ off-policy prediction ก็น่าจะเป็น ถ้าเราไม่ได้ แต่มาจาก แทน เป็นไปได้มั้ยที่เราจะยังประมาณค่า ได้เหมือนเดิม

Off-policy prediction โดยใช้ Importance Sampling

Importance Sampling เป็นวิธีทางสถิติ โดยสามารถแสดงให้เห็นแบบง่าย ๆ ได้ดังนี้

สมมติว่าเรามีฟังก์ชัน เรามีฟังก์ชันความน่าจะเป็น และเราต้องการหา “ค่าคาดหวังของ ภายใต้ ” เราจะได้ว่า

แต่ว่าถ้าเราไม่ได้ sample จาก แต่เป็น แทนล่ะ ? เราก็ยังหาค่าคาดหวังได้อยู่ดีแหละดังนี้

การคูณ เป็นทริกที่ไม่ได้เปลี่ยนค่าแต่ใด เพราะว่าคูณด้วย แต่ว่าช่วยให้เราสามารถเปลี่ยนการ sample ได้ แทนที่จะต้อง sample จาก กลายเป็น sample จาก

เราจะได้ว่า หากทุกครั้งที่เรา sample แล้วแทนที่จะใช้ค่า ตรง ๆ เลยเราเอาค่านั้นมาคูณด้วย (เรียกว่า Importance sampling ratio) ก่อน นั่นคือ เราก็จะได้ค่าคาดหวังอันเดิมได้นั่นเอง แต่นั่นก็แปลว่าเราต้องรู้ด้วยว่า ของเรานั้นมีค่าเท่าไหร่

การใช้งานกับ Reinforcement Learning

เราจะเริ่มจากกรณีของ on-policy prediction ซึ่งก็คือการ sample จำนวนมากจาก คราวนี้เราต้องเปลี่ยนเป็น sample จาก แทน

แต่มันอาจจะง่ายกว่าถ้าเราลองมองแค่ reward เดียวก่อน

การจะ sample reward แต่ละอันสิ่งที่เราต้องทำก็คือ

  1. ทำการ sample action จาก policy
  2. ทำการ sample reward จาก reward distribution
  3. ทำการ sample state ต่อไป (ถ้าต้อง sample reward ต่อไป) จาก state transition probability

สำหรับ reward แรกในที่นี้ (สมมติว่าเราเริ่มที่ ) จะได้ว่า

สำหรับ reward ต่อไป ก็จะได้

หากเราไม่ได้ sample action จาก แต่เป็นจาก แทน เราจะเขียนใหม่ได้ว่า

และ

ถ้าเรามองเฉพาะ reward แรก แล้วลองเปรียบเทียบกับ กรณี เราจะเห็นว่า:

  • ราวกับเป็น แต่เดิม และ
  • ก็คือ อันใหม่
  • ก็คือ ของเรานั่นเอง

เมื่อเห็นฉะนี้เราก็สามาถรเขียนได้ว่า Importance sampling ratio ระหว่าง กับ สำหรับ reward ก็คือ

ใช้อักษร (โรห์) แทน importance sampling ratio

ข้อสังเกต: จะเห็นว่าถ้า มีค่าน้อยมาก ๆ อาจจะทำให้ค่า ระเบิดได้ดังนั้น behavioral policy จะต้องไม่ “คม” เกินไป กล่าวคือจะต้องให้โอกาสเลือก action ต่าง ๆ ไม่น้อยเกินไปนั่นเอง

และถ้าเราคิดต่อไปสำหรับกรณี reward ตัวที่สองเราก็จะได้ว่า Importance sampling ratio ระหว่าง กับ สำหรับ ก็คือ

บอกถึงว่าเรา “คูณกันจาก t ถึง t+1”

จะเห็นว่าแม้ในตอนคูณกันนั้นจะมีส่วนของ state transition probability และ reward probability สุดท้ายแล้วก็ํจะตัดกันเองอยู่ดี เพราะว่าไม่ว่าจะเป็น หรือ ก็ล้วนอยู่ภายใต้ environment (MDP) เดียวกัน ทำเราให้เราสนใจเฉพาะความต่างของทั้งสองก็พอ

สำหรับกรณี reward อื่น ๆ นั้นเราสามารถเดาไปจากตรงนี้ว่า สำหรับ จะมี importance sampling ratio ของตัวเองเท่ากับ

เอาทุกอย่างมารวมกัน เราจะได้ว่าสำหรับแต่ต้นนั้นในกรณีของ on-policy เรามี

ในกรณีของ off-policy เราจะต้องคูณ ของแต่ละ reward ให้ถูกต้อง หน้าแต่ละ reward เพื่อทำให้ได้ค่าเหมือนเดิม

จะเห็นว่าเราต้องใช้ แต่ละ สำหรับแต่ละ reward วิธีการนี้จึงมีชื่อว่า Per-decision Importance Sampling ก็เพราะว่าเราสร้าง importance sampling สำหรับแต่ละ decision (แต่ละ action แต่ละ reward) เลย

ในการ Implement จริง ๆ เราจะต้องเขียนได้ว่า นั้นหามาจากไหน เราจะเขียนได้ว่า

อาจจะดูเข้าใจยากซักนิด แต่หากแยกเป็นส่วน ๆ จะเห็นว่า

  • ตรงนี้จริง ๆ แล้วก็คือ ผลรวมของ reward ที่ผ่านการคูณด้วย importance sampling ratio แล้ว
  • ส่วนที่เหลือก็คือการหาค่า “เฉลี่ย” จากหลาย ๆ ครั้งนั่นเอง (เพราะว่าค่าคาดหวังก็คือค่าเฉลี่ย)

การหาค่าเฉลี่ยในที่นี้ใช้เครื่องหมาย ช่วย โดยเรากำหนดขึ้นมาที่นี้ว่า เป็น set ของทุก ๆ timestep ที่ state “ผ่าน” state พอดิบพอดี ดังนั้นการหาค่าเฉลี่ยของทุก ๆ ครั้งที่เราวิ่งผ่าน ก็คือการหา “ค่าเฉลี่ยของผลรวม reward ทุก ๆ ครั้งที่เริ่มจาก ” นั่นเอง

เพิ่มเติม: การกำหนด ว่าเป็น set ของทุก ๆ timestep ที่ผ่าน state เรียกว่า every-visit Monte Carlo อีกวิธีหนึ่งที่เราทำได้ ก็คือ “สนใจเฉพาะ แรกของแต่ละ episode เท่านั้น” เราก็จะแก้ความหมาย เล็กน้อย แล้วเรียกว่า first-visit Monte Carlo ความต่างของทั้งสองก็คือ every-visit นั้น implement ง่ายกว่า เพราะเราไม่ต้องจำว่าเราผ่าน state นี้ครั้งแรกหรือเปล่า แต่ว่าอาจจะให้ค่าที่แปลก ๆ เพราะหากเราผ่าน state หลายครั้งในหนึ่ง episode ค่า จะเป็นค่าเฉลี่ยจากทุกครั้งที่เราผ่าน ต่างกับกรณี first-visit ที่จะสนใจเฉพาะค่าแรกเท่านั้น

Importance Sampling สำหรับผลรวมทั้งเส้น

แต่ว่าก็มีอีกวิธีที่เรามอง “ทุก reward เป็นภาพรวม” กล่าวคือเราไม่แยกมองเป็นทีละชิ้น แต่เรามองทั้งหมดเป็น return เลย

กล่าวคือ

โดยเราจะหาความน่าจะเป็นที่จะ sample ได้ค่า พร้อมกันทั้งหมดแทน ซึ่งก็สามารถทำได้ในลักษณะเดียวกัน โดยตรงนี้จะแสดงให้เห็นกรณี reward 2 ตัวแรก

หลังจากนั้นเราสามารถเขียนสำหรับกรณีทั่วไปได้ดังนี้

จากสมการ เราสามารถหาค่า Importance sampling ratio ระหว่าง กับ สำหรับ ได้ดังต่อไปนี้

จะเห็นว่าหน้าตาคล้ายเดิมอย่างยิ่ง เพียงแต่ ณ ตอนนี้เราสามารถใช้ ค่า คูณเข้าไปยัง ทั้งเส้น เพื่อให้ได้ค่าที่ถูกต้อง แทนที่จะต้องใช้ค่า สำหรับแต่ละ reward

วิธีนี้เรียกว่า importance sampling แบบปกติ (ทั้งเส้น)

เราสามารถเขียนนิยามของ ได้ในลักษณะเดียวกัน ก็คือการเฉลี่ยจากหลาย ๆ ครั้งที่เราผ่าน state นั้น ๆ

เปรียบเทียบ Importance Sampling และ Per-decision Importance Sampling

ปัญหาของ Importance sampling ในภาพรวมก็คือการคูณทบ ๆ กัน ของ ซึ่งมันจะทำให้ค่าที่ได้มีการแกว่งมาก ๆ ก็เพราะว่ามันขึ้นอยู่กับการ sampling ต่อเนื่องเป็นระยะยาว และเอาแต่ละพจน์มาคูณกัน ยิ่งส่งผลให้ช่วงของค่ามากขึ้นไปอีก ทำให้ importance sampling มีปัญหากับขนาดของ variance มีการกล่าวในหนังสือของ (Sutton, 2018) ว่า variance ของ importance sampling นั้นอาจจะถึง อนันต์ ซึ่งก็เห็นด้วยได้ง่ายเพราะว่าความยาวของ episode นั้นอาจจะยาวเท่าใดก็ได้

เพราะฉะนั้นสำหรับงานใดที่ต้องการใช้ importance sampling จำต้องพิเคราะห์ถึงการจำกัด variance ให้ดี โดยวิธีที่จำกัด variance ได้มาก มักก็จะส่งผลให้มีผลดีในการใช้งานจริงด้วย

เป็นที่ทราบกันว่าหากใช้ importance sampling (แบบทั้งเส้น) โดยตรงนั้น การเทรนจะทำได้ยากอย่างยิ่ง และอาจจะไม่ converge เลยด้วยซ้ำ แต่ว่า per-decision importance sampling ซึ่ง แม้ว่าจะมีพจน์ เช่นกัน แต่ว่าก็ส่งผลเพียงต่อ reward ท้าย ๆ ซึ่งก็อาจจะถูกพลังของ discount ลดความสำคัญลงไปเยอะ ก็จะช่วยทำให้ variance ลดลงได้

อย่างไรก็ดีในการใช้งานจริงนิยมใช้วิธีที่ “ใกล้เคียง” แต่ไม่ใช่ทั้ง importance sampling หรือ per-decision importance sampling ซึ่งเรียกว่า weighted importance sampling ซึ่งวิธีนี้นั้นจริง ๆ แล้ว “ไม่ให้ค่าที่ถูกต้อง” (มี bias) แต่ว่าสามารถควบคุม variance ได้เป็นอย่างดีจึงทำให้การใช้งานจริงนั้นให้ผลที่ดีกว่ามาก

Weighted Importance Sampling

การที่เราคูณ หลาย ๆ ครั้งส่งผลให้ค่า นี้ แกว่งมาก ๆ และก็แกว่งมากขึ้นเรื่อย ๆ ตามจำนวนการคูณ วิธีหนึ่งที่จะช่วย “จำกัด” การแกว่งก็คือการ “หาร” ด้วยอะไรที่เยอะพอ ๆ กัน

เราทำการแก้ไขเล็กน้อยจากสมการ โดยการแก้ตัวส่วนให้มีค่าแกว่งไปพร้อม ๆ กับตัวเศษ

สิ่งที่เราเห็นในทันทีก็คือ ใหม่นี้จะแกว่งน้อยกว่ามากส่งผลให้ variance น้อยลงตามไปด้วย วิธีนี้จึงเหมาะสมมากกว่าในการใช้งานจริง

สิ่งที่เราเห็นต่อมาก็คือ อยู่ดี ๆ เราจะแก้ตามอำเภอใจแบบนี้ไม่ได้สิ คำตอบแบบสั้น ๆ ก็คือ เรายอม “ผิด” เพราะว่าสมการ นั้น bias ไม่ได้ให้ค่าที่ถูกต้องโดยเฉลี่ยเหมือนกับ importance sampling ทั่วไป แต่เราก็ยอมจ่ายเพราะว่ามันช่วยให้เราทำงานกับมันได้ง่ายมากขึ้น

คำถามต่อมาก็คือ แล้วมัน bias ไปขนาดไหนล่ะ? เพราะว่าถ้ามัน bias แบบไม่เห็นเค้าเดิมเลยมันก็ไม่น่าจะดีอยู่แล้ว จริงอย่างว่า เพราะว่า สมการ นั้นมี bias ก็จริง แต่ว่าขนาดของ bias นั้น “น้อยลง” เรื่อย ๆ หากเราเฉลี่ยด้วยจำนวนที่มากขึ้น และมัน “เข้าใกล้” ค่าจริงเมื่อเราเฉลี่ยด้วยจำนวนอนันต์ แต่แน่นอนว่าเราไม่ได้เฉลี่ยด้วยจำนวนอนันต์จึงต้องยอมรับว่า มันก็ยัง bias อยู่ดี

การแสดงว่ามันเข้าใกล้ค่าจริง เมื่อเฉลี่ยด้วยจำนวนอนันต์สามารถทำได้ดังนี้

  • เราอาศัยความจริงที่ว่า
  • และเราจะแสดงว่า weighted importance sampling นั้นเข้าใกล้ importance sampling เมื่อ มีขนาดอนันต์

สมการ จะเป็นจริงก็ด้วย Law of large numbers เท่านั้น ดังนั้นหาก ไม่ได้เยอะเข้าใกล้ แล้วก็พูดอย่างนั้นไม่ได้

หลังจากนั้นเราก็ทำการย้ายข้างเล็กน้อยดังนี้

นำค่าที่ได้ไปแทนในสมการ จะได้ว่า

เราจะเห็นว่าจริง ๆ แล้ว weighted importance sampling กับ importance sampling ธรรมดานั้นมีค่าเท่ากันเมื่อ เป็นอนันต์ (ใหญ่พอ)

หมายเหตุ: การจะทำแบบเดียวกันนี้กับ per-decision importance sampling นั้นไม่ตรงไปตรงมาเท่าใดนักก็เพราะว่า ของแต่ละ reward ไม่เหมือนกัน ทำให้พูดได้ยากว่าอะไรคือ weight ที่เหมาะสมกันแน่ อย่างไรก็ดีมีงานที่เสนอการทำ weighted per-decision importance sampling ชื่อว่า Eligibility Traces for Off-Policy Policy Evaluation (2000)

แสดงว่า

เพื่อให้เห็นภาพจะแสดงให้ดูในกรณีของ อย่างละเอียดเพื่อให้เห็นภาพชัดเจน

ลองหาค่าคาดหวังของ ภายใต้ behavioral policy

จะเห็นว่าจริง ๆ แล้วเนื่องจากระหว่าง กับ นั้นไม่เกี่ยวข้องกัน (เมื่อกำหนด ให้) ดังนั้นจึงราวกับว่าแต่ละ term ที่คูณกันใน สามารถแยกกันคิดได้ ซึ่งก็ส่งผลให้ค่าคาดหวังทั้งหมดกลายเป็น 1 เพราะว่าแต่ละส่วนเป็น 1 นั่นเอง

การใช้งานกับ n-step TD

โดยปกติ TD หรือ Temporal Difference จะใช้ตัวอย่าง reward เพียง 1 ตัวอย่างเพื่ออัพเดทค่าประมาณ หรือ เป็นที่ทราบกันดีว่า TD นั้นอยู่ฝั่งตรงข้ามกับ Monte Carlo ในมุมของ variance และ bias กล่าวคือ

  • TD มี bias มาก มี variance น้อย
  • Monte Carlo ไม่มี bias แต่มี variance มาก

n-step TD คือความพยายามหา “จุดกึ่งกลาง” ระหว่าง 2 วิธีการนี้ แทนที่จะใช้ reward เพียงอันเดียวแบบ TD ดังนี้

เราจะใช้ reward หลาย ๆ ตัว ยกตัวอย่างเช่น 2 ตัว ดังต่อไปนี้

เราก็สามารถเดาได้ว่า จะมีหน้าตาเป็นอย่างไร

n-step TD คือการใช้ มาแทนที่ของ เราจะได้ว่าหน้าตาของ n-step SARSA เป็นดังนี้

จะเห็นว่า ต้องการ แต่ในกรณีที่เรามีเฉพาะค่า เราจะสามารถหาค่า ได้ดังนี้

หากเราใช้การ sampling สำหรับประมาณ ดังด้านบน เราจะเรียกว่า SARSA เฉย ๆ แต่ว่าถ้าเราใช้การหาค่าเฉลี่ยแบบเป๊ะ ๆ ดังต่อไปนี้

เราเรียกวิธีการนี้ว่า n-step expected SARSA

ซึ่งเวลาที่เรามาใช้กับ off-policy importance sampling สิ่งที่เราต้องสนใจก็คือ “สำหรับแต่ละ term มีการ sampling action หรือเปล่า?” เพราะว่าเราต้องคูณ ทุกที่ที่มีการ sampling action

จะเห็นว่าในกรณีของ n-step SARSA เรามีการสุ่ม n-1 ครั้งสำหรับ n reward แรก ที่เป็น n-1 ก็เพราะว่า SARSA เป็นฟังก์ชัน ดังนั้น action แรกไม่ได้เกิดจากการสุ่ม และรวมกับอีก 1 ครั้งตอนสุ่มหาค่า

จึงได้ว่าสำหรับ n-step SARSA เราจะเขียนแบบ off-policy ได้ดังนี้

สำหรับ n-step expected SARSA เรามีการ n-1 ครั้งสำหรับ n reward แรก เหมือนกัน แต่ว่าเราไม่ได้สุ่มอีกเลยตอนหาค่า v เพราะเราหาค่าแบบเป๊ะ ๆ จึงได้ว่าสำหรับ n-step expected SARSA เราสามารถเขียน off-policy ได้ดังนี้

หมายเหตุ: เราสามารถใช้ได้ทั้ง importance sampling หรือ per-decision importance sampling หรือ weighted importance sampling เพียงแค่แก้ค่า ให้เหมาะสม

การใช้งานกับ Experience Replay

สำหรับอัลกอริทึมที่ใช้ข้อมูลแบบ off-policy เรามักจะใช้งาน experience replay เนื่องจากเราสามารถใช้ขอมูลเก่า ๆ ได้ (ต่างจาก on-policy ที่ต้องการประสบการณ์สดใหม่เท่านั้น จึงไม่นิยมใช้ experience replay)

หมายเหตุ: กรณีของ DQN และ Q-learning โดยทั่วไปไม่ต้องทำการคูณด้วย importance sampling ratio เนื่องจากสมการของ Q-learning ไม่ได้สนใจว่าประสบการณ์นั้นมาจาก policy ใด จึงเรียกว่า Q-learning เป็น off-policy โดยกำเนิด แต่นี่ไม่เป็นจริงสำหรับการใช้ n-step Q-learning (และ n-step algorithm ในภาพรวม)

เนื่องจากการใช้งาน importance sampling เราจำเป็นต้องรู้ว่า policy ที่ใช้เก็บข้อมูลนั้นมีหน้าตาเป็นอย่างไร กล่าวคือ มีค่าเท่าไหร่ เพราะว่าต้องเอาไปเป็นตัวหาร ดังนั้น นอกจากจะต้องเก็บข้อมูลอย่าง state, action, reward ใน experience replay แล้ว ก็ยังจะต้องเก็บด้วยว่า ณ ตอนที่เก็บข้อมูลนี้นั้น มีค่าเท่าไหร่

อ้างอิง

Sutton, R. S., & Barto, A. G. (2018). Reinforcement learning: An introduction. MIT press. https://doi.org/10.1016/S1364-6613(99)01331-5

Hernandez-Garcia, J. F., & Sutton, R. S. (2019). Understanding Multi-Step Deep Reinforcement Learning: A Systematic Study of the DQN Target. Retrieved from http://arxiv.org/abs/1901.07510

Amherst, S., Precup, D., Sutton, R. S., & Singh, S. (2000). Eligibility Traces for Off-Policy Policy Evaluation (Vol. 80).