การเรียนรู้การเสริมแรงด้วยตัวแทน Tensorflow [2022]

เผยแพร่แล้ว: 2021-01-01

การเรียนรู้การเสริมกำลังได้รับความนิยมอย่างมากจากความสำเร็จล่าสุดของวิธีการ AlphaGo ของ DeepMind ในการเอาชนะผู้เล่น Go ระดับแชมป์โลก วิธี AlphaGo ได้รับการศึกษาส่วนหนึ่งโดยการเรียนรู้เสริมแรงบนโครงข่ายประสาทเทียมระดับลึก

รูปแบบการเรียนรู้นี้เป็นคุณลักษณะที่แตกต่างของแมชชีนเลิร์นนิงจากกระบวนทัศน์แบบคลาสสิกที่มีการควบคุมดูแลและไม่ได้รับการดูแล ในการเรียนรู้การเสริมกำลัง เครือข่ายตอบสนองต่อข้อมูลสิ่งแวดล้อม (เรียกว่าสถานะ) โดยใช้เครือข่ายประสาทเทียมลึก และมีอิทธิพลต่อพฤติกรรมของตัวแทนเพื่อพยายามปรับรางวัลให้เหมาะสม

เทคนิคนี้ช่วยให้เครือข่ายเรียนรู้วิธีเล่นกีฬา เช่น Atari หรือวิดีโอเกมอื่นๆ หรือความท้าทายอื่นๆ ที่สามารถเขียนใหม่เป็นรูปแบบของเกมได้ ในบทช่วยสอนนี้ ซึ่งเป็นแบบจำลองทั่วไปของการเรียนรู้แบบเสริมกำลัง ฉันจะแนะนำหลักการกว้างๆ ของการเรียนรู้ Q และฉันจะสาธิตวิธีรวมการเรียนรู้ Q เชิงลึกใน TensorFlow

สารบัญ

ความรู้เบื้องต้นเกี่ยวกับการเรียนรู้การเสริมแรง

ดังที่กล่าวไว้ข้างต้น การเรียนรู้แบบเสริมกำลังประกอบด้วยหน่วยงานหรือหลักการพื้นฐานบางประการ สิ่งเหล่านี้คือ: สภาพแวดล้อมที่สร้างเงื่อนไขและรางวัล และเอนทิตีที่ดำเนินการในสภาพแวดล้อมที่กำหนด ในแผนภาพด้านล่าง คุณเห็นการโต้ตอบนี้:

งานของตัวแทนในการตั้งค่าดังกล่าวคือการวิเคราะห์สถานะและข้อมูลจูงใจที่ได้รับ และเลือกพฤติกรรมที่เพิ่มข้อมูลที่ได้รับจากรางวัลให้สูงสุด ตัวแทนเรียนรู้โดยติดต่อกับโลกซ้ำ ๆ หรือกล่าวอีกนัยหนึ่งคือการเล่นเกมซ้ำ ๆ

เพื่อให้ประสบความสำเร็จ ตัวแทนจำเป็นต้อง:

1. เรียนรู้ความเชื่อมโยงระหว่างรัฐ พฤติกรรม และสิ่งจูงใจที่เป็นผล

2. กำหนดว่าอันไหนดีที่สุดที่จะเลือกจาก (1)

การดำเนินการ (1) จำเป็นต้องมีการกำหนดชุดของหลักการบางอย่างที่สามารถใช้ในการแจ้ง (2) และ (2) เรียกว่ากลยุทธ์การดำเนินงาน วิธีการทั่วไปวิธีหนึ่งในการใช้ (1) และ (2) โดยใช้ deep Q คือเครือข่าย Deep Q และนโยบาย epsilon-greedy

เรียนรู้: 5 โครงการ TensorFlow ยอดนิยมสำหรับผู้เริ่มต้น

การเรียนรู้คิว

การเรียนรู้ของ Q เป็นวิธีการส่งข้อมูลตามมูลค่าเพื่อบอกว่าตัวแทนสามารถดำเนินการใดได้บ้าง ในการสร้างตารางที่สรุปประโยชน์ของการดำเนินการกับการเล่นเกมหลายเกมในรัฐนั้นเป็นแนวคิดที่ใช้งานง่ายในขั้นต้นในการสร้างหลักการสำหรับการกระทำพื้นฐาน สิ่งนี้จะติดตามการเคลื่อนไหวที่เป็นประโยชน์มากที่สุด สำหรับการเริ่มต้น เรามาพิจารณาเกมง่ายๆ ในแต่ละสถานะที่มี 3 สถานะและการกระทำที่เป็นไปได้สองอย่าง ตารางหนึ่งอาจเป็นตัวแทนของรางวัลสำหรับเกมนี้:

แอคชั่น 1 แอคชั่น 2
รัฐ 1 0 10
รัฐ2 10 0
รัฐ3 0 10

คุณสามารถเห็นในตารางด้านบนว่าสำหรับเกมง่ายๆ นี้ เมื่อตัวแทนอยู่ในสถานะ 1 และรับการดำเนินการ 2 หากดำเนินการ 1 จะได้รับรางวัล 10 แต่รางวัลเป็นศูนย์ ในรัฐ 2 เงื่อนไขจะกลับกัน และสถานะ 3 ในที่สุดก็คล้ายกับสถานะ 1 หากตัวแทนสำรวจเกมนี้โดยพลการและนับพฤติกรรมได้รับรางวัลมากที่สุดในสามสถานะใด ๆ (การจัดเก็บความรู้นี้ในอาร์เรย์ พูด) ดังนั้นรูปแบบการปฏิบัติของตารางข้างต้นจึงเป็นที่รู้จักอย่างมีประสิทธิภาพ

กล่าวอีกนัยหนึ่งถ้าตัวแทนเลือกพฤติกรรมที่ได้เรียนรู้ในอดีตที่ให้รางวัลสูงสุด (การเรียนรู้รูปแบบตารางด้านบนอย่างมีประสิทธิภาพ) มันก็จะได้เรียนรู้วิธีเล่นเกมอย่างมีประสิทธิภาพ เมื่อมีความเหมาะสมที่จะสร้างตารางโดยการบวก เหตุใดเราจึงต้องการแนวคิดแฟนซี เช่น การเรียนรู้ Q และโครงข่ายประสาทเทียม

รางวัลรอการตัดบัญชี

คำตอบแรกที่ชัดเจนคือเกมด้านบนนั้นเรียบง่ายมาก โดยมีเพียง 3 สถานะและ 2 การกระทำต่อสถานะ เกมจริงนั้นซับซ้อนกว่ามาก หลักการให้รางวัลล่าช้าในกรณีข้างต้นเป็นแนวคิดสำคัญอีกประการหนึ่งที่ขาดหายไป ตัวแทนต้องเรียนรู้ที่จะสามารถทำตามขั้นตอนในการเล่นเกมที่สมจริงที่สุดได้อย่างเหมาะสม ซึ่งอาจไม่ได้นำไปสู่การให้รางวัลเสมอไป แต่อาจส่งผลให้เกิดรางวัลที่สำคัญได้ในภายหลัง

แอคชั่น 1 แอคชั่น 2
รัฐ 1 0 5
รัฐ2 0 5
รัฐ3 0 5
รัฐ4 20 0

หาก Action 2 ถูกดำเนินการในทุกสถานะในเกมดังกล่าว ตัวแทนจะย้ายกลับไปที่สถานะ 1 กล่าวคือจะกลับไปที่จุดเริ่มต้น ในรัฐที่ 1 ถึง 3 จะได้รับเครดิต 5 เมื่อทำเช่นนั้น ดังนั้น หากการดำเนินการ 1 เกิดขึ้นในรัฐ 1-3 ทั้งหมด ตัวแทนจะเดินทางไปยังรัฐถัดไป แต่จะไม่ได้รับรางวัลจนกว่าจะเข้าสู่รัฐ 4 เมื่อถึงจุดนั้น ตัวแทนจะได้รับรางวัล 20

กล่าวอีกนัยหนึ่งตัวแทนจะดีกว่าหากไม่ดำเนินการ 2 เพื่อรับรางวัลทันที 5 แต่สามารถเลือกการกระทำ 1 เพื่อดำเนินการอย่างต่อเนื่องผ่านรัฐเพื่อรับรางวัล 20 ตัวแทนต้องการที่จะสามารถ เพื่อเลือกการกระทำที่ส่งผลให้รางวัลล่าช้าเมื่อมูลค่ารางวัลล่าช้าสูงเกินไป

อ่านเพิ่มเติม: การจัดประเภทรูปภาพ Tensorflow

กฎการเรียนรู้ Q

สิ่งนี้สนับสนุนให้เราชี้แจงกฎการเรียนรู้ Q ในการเรียนรู้ Q เชิงลึก โครงข่ายประสาทจำเป็นต้องใช้สถานะปัจจุบัน s เป็นเวกเตอร์และส่งกลับค่า Q สำหรับแต่ละพฤติกรรมที่เป็นไปได้ a ในสถานะนั้น กล่าวคือ จำเป็นต้องส่งคืน Q (s, a) สำหรับทั้งคู่ ส และ ก. คำถาม (s, a) นี้จำเป็นต้องได้รับการแก้ไขในการฝึกอบรมโดยใช้กฎต่อไปนี้:

Q(s,a) = Q(s,a) + alp[r+γmax Q(s',a ') – Q(s,a)] + alp[r+ γmax Q(s',a')

กฎหมายฉบับนี้ต้องการการแกะกล่องเล็กน้อยสำหรับการอัปเกรด ประการที่สอง คุณจะเห็นว่าค่าใหม่ของ Q(s, a) ต้องเปลี่ยนค่าที่มีอยู่โดยการใส่บิตพิเศษทางด้านขวาของสมการข้างต้น สลับซ้ายไปขวา ลืมอัลฟ่าไปชั่วขณะหนึ่ง ในวงเล็บเหลี่ยม เราจะเห็นคำแรกคือ r ซึ่งหมายถึงรางวัลที่ได้รับจากการดำเนินการในรัฐต่างๆ

นี่คือรางวัลทันที ยังไม่มีความพึงพอใจรอการตัดบัญชีที่เกี่ยวข้อง คำต่อไปคือการประมาณการแรงจูงใจรอการตัดบัญชี อย่างแรกเลย เรามีค่า γ ที่จะลดผลของรางวัลที่ล่าช้า ซึ่งมักจะอยู่ระหว่าง 0 ถึง 1 มากกว่านั้นในไม่กี่วินาที เทอมถัดไป maxa'Q(s, 'a') คือค่า Q สูงสุดที่มีอยู่ในเงื่อนไขถัดไป

มาทำให้ง่ายขึ้นหน่อยเถอะ - เอเจนต์เริ่มทำงานในสถานะ ดำเนินการ a เสร็จสิ้นในสถานะ จากนั้นโค้ดจะระบุค่าสูงสุดของ Q ในสถานะ เช่น 'Q(s',a') สูงสุด เหตุใดแม็กซ์จึงคำนึงถึงความรู้สึก 'Q (s', a') ถ้ามันมีผลและอยู่ในสถานะ s เป็นที่ทราบกันดีอยู่แล้วว่าเป็นตัวแทนของรางวัลที่เป็นไปได้ทั้งหมดที่จะส่งไปยังผู้ดูแล

อย่างไรก็ตาม γ ลดราคานี้เพื่อพิจารณาว่าการรอสิ่งจูงใจที่เป็นไปได้ตลอดไปไม่พึงปรารถนาสำหรับตัวแทน - เป็นการดีกว่าสำหรับตัวแทนที่จะกำหนดเป้าหมายรางวัลที่ใหญ่ที่สุดโดยใช้เวลาน้อยที่สุด ขอให้สังเกตว่ามูลค่าของ Q(s',a)' ยังคงรักษาแรงจูงใจที่มีส่วนลดสูงสุดสำหรับเศรษฐกิจหลังจากนั้นโดยปริยาย เช่น Q(s',a)' เพราะมันยังคงรักษาแรงจูงใจที่ลดราคาสำหรับรัฐ Q(s',a) ' และอื่นๆ

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

การเรียนรู้ Deep Q

การเรียนรู้ Deep Q เป็นไปตามกฎหมายอัปเดตการเรียนรู้ Q ตลอดขั้นตอนการฝึกอบรม กล่าวอีกนัยหนึ่ง โครงข่ายประสาทเทียมถูกสร้างขึ้นที่รับสถานะ s เป็นอินพุต จากนั้นเครือข่ายจะได้รับการฝึกอบรมเพื่อสร้างค่า Q(s, a) ที่เหมาะสมสำหรับแต่ละพฤติกรรมในสถานะ s จากนั้นการดำเนินการของเอเจนต์จะถูกเลือกโดยการดำเนินการที่มีค่า Q(s, a) มากที่สุด (โดยรับ argmax จากเอาต์พุตของโครงข่ายประสาทเทียม) สามารถเห็นได้ในขั้นตอนแรกของแผนภาพด้านล่าง:

ขั้นตอนการเลือกการดำเนินการและการฝึกอบรม – การเรียนรู้ Deep Q

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

เวกเตอร์สถานะคืออาร์เรย์อินพุต x สำหรับการฝึกเครือข่าย และตัวอย่างการฝึกเอาต์พุต y คือเวกเตอร์ Q(s, a) ที่รวบรวมระหว่างกระบวนการเลือกการดำเนินการ อย่างไรก็ตาม ค่า Q(s,a) ค่าใดค่าหนึ่งซึ่งสอดคล้องกับการกระทำ a ถูกกำหนดให้มีเป้าหมายเป็น r+γQ(s',a ') ดังที่เห็นในรูปด้านบน โดยการฝึกอบรมเครือข่ายในลักษณะนี้เพื่อบอกตัวแทนว่าพฤติกรรมใดดีที่สุดในการเลือกเพื่อประโยชน์ในระยะยาว เวกเตอร์เอาท์พุต Q(s, a) จากเครือข่ายจะแข็งแกร่งขึ้นเมื่อเวลาผ่านไป

ข้อดีของการเรียนรู้การเสริมแรง:

  • การเรียนรู้การเสริมแรงสามารถใช้เพื่อแก้ปัญหาท้าทายที่ท้าทายมากซึ่งไม่สามารถเอาชนะได้ด้วยวิธีการแบบเดิมๆ
  • กลยุทธ์นี้ได้รับการคัดเลือกเพื่อสร้างผลลัพธ์ในระยะยาวซึ่งทำได้ยากมาก
  • รูปแบบการเรียนรู้นี้ค่อนข้างคล้ายกับการเรียนรู้ของมนุษย์ ดังนั้นจึงใกล้จะถึงความสมบูรณ์แบบแล้ว
  • ตัวแบบจะแก้ไขข้อผิดพลาดที่เกิดขึ้นระหว่างขั้นตอนการทดสอบ
  • หากข้อผิดพลาดได้รับการแก้ไขโดยแบบจำลอง โอกาสที่ข้อผิดพลาดเดียวกันจะเกิดขึ้นจะลดลงเล็กน้อย
  • มันจะสร้างกระบวนทัศน์ที่ดีที่สุดสำหรับปัญหาเฉพาะที่จะแก้ไข

ข้อเสียของการเรียนรู้การเสริมแรง

  • การเรียนรู้การเสริมกำลังตามแบบแผนไม่ถูกต้องในหลาย ๆ ด้าน แต่คุณสมบัตินี้ทำให้มีประโยชน์อย่างแม่นยำ
  • การเรียนรู้การเสริมแรงมากเกินไปอาจส่งผลให้รัฐถูกครอบงำ ซึ่งสามารถลดผลลัพธ์ได้
  • การเรียนรู้การเสริมกำลังไม่เหมาะที่จะใช้ในการแก้ปัญหาพื้นฐาน
  • การเรียนรู้การเสริมกำลังต้องใช้สติปัญญาและการคำนวณอย่างมาก มันหิวข้อมูล นั่นเป็นเหตุผลที่ว่าทำไมมันถึงเข้ากันได้ดีกับวิดีโอเกม คุณจึงสามารถเล่นเกมได้ซ้ำแล้วซ้ำเล่า และดูเหมือนว่าจะได้รับรายละเอียดมากมาย
  • การเรียนรู้การเสริมกำลังถือว่าจักรวาลเป็น Markovian ซึ่งไม่ใช่ แบบจำลอง Markovian อธิบายลำดับเหตุการณ์ที่เป็นไปได้ ซึ่งความน่าจะเป็นของแต่ละเหตุการณ์ขึ้นอยู่กับเงื่อนไขที่ได้รับในเหตุการณ์ก่อนหน้าเท่านั้น

อะไรต่อไป?

หากคุณต้องการเชี่ยวชาญแมชชีนเลิร์นนิงและเรียนรู้วิธีฝึกตัวแทนให้เล่น tic tac toe ฝึกแชทบ็อต ฯลฯ ให้ลองดูหลักสูตรประกาศนียบัตร PG ปัญญาประดิษฐ์ของ upGrad

TensorFlow คืออะไร?

Python ซึ่งเป็นภาษาโปรแกรมที่นิยมใช้ในการเรียนรู้ของเครื่อง มาพร้อมกับไลบรารีฟังก์ชันมากมาย TensorFlow เป็นหนึ่งในไลบรารี Python ที่เปิดตัวโดย Google ซึ่งรองรับการคำนวณเชิงตัวเลขที่รวดเร็วและมีประสิทธิภาพ เป็นไลบรารีโอเพ่นซอร์สที่สร้างและดูแลโดย Google ซึ่งใช้กันอย่างแพร่หลายในการพัฒนาโมเดลการเรียนรู้เชิงลึก TensorFlow ยังใช้ร่วมกับไลบรารีแรปเปอร์อื่น ๆ เพื่อทำให้กระบวนการง่ายขึ้น TensorFlow ต่างจากไลบรารีตัวเลขอื่น ๆ ที่ใช้ใน Deep Learning ด้วย TensorFlow ได้รับการพัฒนาสำหรับการวิจัยและพัฒนาแอพพลิเคชั่นและฟังก์ชั่นสภาพแวดล้อมการผลิต มันสามารถทำงานบนเครื่องที่มี CPU ตัวเดียว อุปกรณ์พกพา และระบบคอมพิวเตอร์แบบกระจาย

ไลบรารีอื่น ๆ เช่น TensorFlow ในการเรียนรู้ของเครื่องมีอะไรบ้าง

ในช่วงก่อนหน้านี้ วิศวกรแมชชีนเลิร์นนิงเคยเขียนโค้ดทั้งหมดสำหรับอัลกอริธึมการเรียนรู้ของเครื่องต่างๆ ด้วยตนเอง ตอนนี้การเขียนโค้ดบรรทัดเดียวกันทุกครั้งสำหรับอัลกอริธึมที่คล้ายคลึงกัน โมเดลทางสถิติและคณิตศาสตร์ไม่เพียงแต่ใช้เวลานาน แต่ยังไร้ประสิทธิภาพและน่าเบื่ออีกด้วย เพื่อเป็นการแก้ปัญหาชั่วคราว ไลบรารี Python ถูกนำมาใช้เพื่อนำฟังก์ชันกลับมาใช้ใหม่และประหยัดเวลา คอลเล็กชันไลบรารีของ Python นั้นกว้างใหญ่และหลากหลาย ไลบรารี่ที่ใช้บ่อยที่สุดของ Python ได้แก่ Theano, Numpy, Scipy, Pandas, Matplotlib, PyTorch, Keras และ Scikit-learn นอกเหนือจาก TensorFlow ไลบรารี Python ยังเข้ากันได้กับไลบรารี C/C++ อย่างง่ายดาย

ข้อดีของการใช้ TensorFlow คืออะไร?

ข้อดีมากมายของ TensorFlow ทำให้เป็นตัวเลือกยอดนิยมอย่างมหาศาลในการพัฒนาแบบจำลองการคำนวณในการเรียนรู้เชิงลึกและการเรียนรู้ของเครื่อง ประการแรก เป็นแพลตฟอร์มโอเพ่นซอร์สที่รองรับรูปแบบการแสดงข้อมูลที่ได้รับการปรับปรุงด้วยการนำเสนอแบบกราฟิก โปรแกรมเมอร์ยังสามารถใช้เพื่อดีบักโหนดซึ่งช่วยประหยัดเวลาและขจัดความจำเป็นในการตรวจสอบความยาวทั้งหมดของรหัสเครือข่ายประสาท TensorFlow รองรับการทำงานทุกประเภท และนักพัฒนาสามารถสร้างโมเดลหรือระบบประเภทใดก็ได้บนแพลตฟอร์มนี้ มันเข้ากันได้กับภาษาการเขียนโปรแกรมอื่น ๆ เช่น Ruby, C++ และ Swift อย่างง่ายดาย