บทนำสู่พีชคณิตเชิงเส้นที่อธิบายด้วยเส้น
(ducktyped.org)- บทความนี้เป็นการแนะนำแนวคิดพื้นฐานของ พีชคณิตเชิงเส้น พร้อมภาพประกอบ
- ช่วงต้นเน้นอธิบายแนวคิด การกำจัดแบบเกาส์เซียน (Gaussian elimination) และ ภาพแบบแถว (row picture) vs ภาพแบบคอลัมน์ (column picture)
- ใช้ตัวอย่างที่ใกล้ตัว (เหรียญ, อาหาร) เพื่ออธิบาย สมการเชิงเส้น และกระบวนการหาคำตอบให้เข้าใจง่าย
- เน้นการเปลี่ยนวิธีคิดทางคณิตศาสตร์จากลำดับจำนวนไปสู่แนวคิดอย่าง เวกเตอร์ และ สัญกรณ์เมทริกซ์
- ย้ำว่าหัวใจของพีชคณิตเชิงเส้นคือการจัดการกับ อาร์เรย์, เวกเตอร์, เมทริกซ์ แทนตัวเลขเพียงอย่างเดียว
บทนำ
บทความนี้เป็นสื่อเบื้องต้นสำหรับผู้ที่รู้พีชคณิตแบบเดิมอยู่แล้ว แต่ยังไม่รู้จักพีชคณิตเชิงเส้น
แนวคิดสำคัญสองอย่างแรกที่กล่าวถึงคือ การกำจัดแบบเกาส์เซียน (Gaussian elimination) และ ภาพแบบแถว (row picture) vs ภาพแบบคอลัมน์ (column picture)
ตัวอย่างเรื่องเงิน
- อธิบายปัญหาการคำนวณว่าหากมีเหรียญนิกเกิล (nickel) และเหรียญเพนนี (penny) หลายเหรียญ จะต้องใช้เหรียญแต่ละชนิดกี่เหรียญเพื่อให้ได้ 23 เซนต์
- ให้ x คือจำนวนเหรียญนิกเกิล และ y คือจำนวนเหรียญเพนนี เมื่อนำมาเขียนเป็นสมการ จะได้สมการเชิงเส้นที่ใช้ชุดค่าของ x และ y เพื่อให้รวมกันได้ 23
- ในตัวอย่างนี้ คำตอบเป็นไปได้หลายแบบ (เช่น นิกเกิล 4 เหรียญกับเพนนี 3 เหรียญ หรือเพนนี 23 เหรียญ)
- เน้นว่า สมการเชิงเส้น (linear equation) คือสมการที่ไม่มีเส้นโค้งหรือรูพรุน ทุกอย่างอยู่บนระนาบ
- การให้ตัวแปร 2 ตัวตรงกับ ตัวเลขหนึ่งค่า นั้นทำได้ง่าย แต่เมื่อเป็นสถานการณ์ที่ต้องให้ตัวแปร 2 ตัวตรงกับ ตัวเลขสองค่า พร้อมกัน เรื่องจะซับซ้อนขึ้น และในกรณีนี้การกำจัดแบบเกาส์เซียนจะมีประโยชน์
ตัวอย่างเรื่องอาหาร
- มีอาหารสองชนิด เช่น ขนมปัง (bread) และนม (milk) และต้องหาชุดค่าที่ตรงกับเป้าหมายที่กำหนด (เช่น คาร์โบไฮเดรต 5g และโปรตีน 7g) จากข้อมูล คาร์โบไฮเดรต (carbs) และ โปรตีน (protein) ของอาหารแต่ละชนิด
- ในกรณีนี้ต้องสร้างสมการสองสมการเพื่อหาค่า x (จำนวนนม) และ y (จำนวนขนมปัง)
- ปัญหาแบบนี้ใช้ การกำจัดแบบเกาส์เซียน
การกำจัดแบบเกาส์เซียน
- อธิบายกระบวนการเขียนใหม่ให้อยู่ในรูปของสมการเชิงเส้นสองสมการ จากนั้นค่อย ๆ ตัดตัวแปรออกทีละตัวด้วยการลบหรือบวกพหุคูณคงที่ของสมการหนึ่งเข้ากับอีกสมการ เพื่อจำกัดค่าที่เป็นไปได้ให้แคบลง
- ในตัวอย่างจะกำจัด y ออกก่อนเพื่อหาค่า x แล้วจึงแทนกลับเพื่อหาค่า y
- ผลลัพธ์สุดท้ายคือ นม 3 หน่วย, ขนมปัง 1 หน่วย
- กล่าวถึงว่า การกำจัดแบบเกาส์เซียน เป็นเทคนิคทั่วไปที่มีประวัติยาวนาน
วิธีทำความเข้าใจด้วยภาพ
- ก่อนหน้านี้แก้ด้วยแนวทางภาพแบบแถว (row picture) แต่ตอนนี้จะอธิบายการแก้ปัญหาด้วย ภาพ/กราฟ เพื่อให้เห็นภาพ
- แปลงแต่ละสมการให้อยู่ในรูปอ้างอิง x (นม) แล้ววาดเส้นตรงลงบนกราฟ
- กราฟของสมการแรกคือชุดค่าผสมของนม-ขนมปังทั้งหมดที่ทำให้ได้เป้าหมายคาร์โบไฮเดรต (จุดบนเส้น)
- สมการที่สองก็แสดงในลักษณะเดียวกัน
- เน้นว่าหากต้องการให้ได้ทั้งสองเป้าหมายพร้อมกัน คำตอบคือจุดเดียวที่เส้นตรงทั้งสองตัดกัน
- วิธีนี้ก็ให้ผลลัพธ์เป็น นม 3 หน่วย, ขนมปัง 1 หน่วย เช่นกัน
- อธิบายว่า การกำจัดแบบเกาส์เซียน เป็นเทคนิคพื้นฐานที่สำคัญมากและถูกใช้มานานกว่าสองพันปี แม้ไม่ต้องอาศัยพีชคณิตเชิงเส้นก็ตาม
ภาพแบบคอลัมน์ (Column Picture)
- ก่อนหน้านี้เน้น ภาพแบบแถว (row picture) ที่มองแต่ละสมการแยกกัน ตอนนี้จึงนำเสนอแนวทาง ภาพแบบคอลัมน์ (column picture)
- รวมสองสมการให้เป็นสมการเดียว และแสดงค่าสัมประสิทธิ์ในรูป อาร์เรย์ (เวกเตอร์)
- เวกเตอร์สามารถมองได้ว่าเป็นอาร์เรย์ที่มีลำดับหมายเลขกำกับไว้ (คล้ายเวกเตอร์ในวิทยาการคอมพิวเตอร์)
- การทำกราฟเวกเตอร์: สามารถแสดงเวกเตอร์เป็นจุดหรือเป็นลูกศรก็ได้
- เมื่อมองการบวกเวกเตอร์ในเชิงภาพ จะเห็นได้อย่างเป็นธรรมชาติว่าเส้นทางไปสู่คำตอบคืออะไร (เช่น การบวกเวกเตอร์ของนมสามครั้ง และเวกเตอร์ของขนมปังหนึ่งครั้ง)
- อธิบายว่าการคูณและการบวกของเวกเตอร์ก็คือการคำนวณกับสมาชิกแต่ละตัวของเวกเตอร์ตามลำดับ
- วิธีภาพแบบคอลัมน์ที่ใช้เวกเตอร์อาจให้ความรู้สึกเข้าใจง่ายกว่าวิธีเดิมในหลายด้าน
การรู้จักพีชคณิตเชิงเส้น
- ย้ำว่าเนื้อหาสำคัญของพีชคณิตเชิงเส้นคือการเปลี่ยนวิธีคิดจากพีชคณิตที่ยึดตัวเลขเป็นหน่วย ไปสู่พีชคณิตที่ยึด อาร์เรย์, เวกเตอร์ เป็นศูนย์กลาง
- ทั้งภาพแบบคอลัมน์และภาพแบบแถวต่างก็เป็นวิธีทำให้เห็นภาพที่สำคัญของพีชคณิตเชิงเส้น
- ท้ายที่สุดมีการแนะนำ สัญกรณ์เมทริกซ์ (matrix) แบบสั้น ๆ พร้อมแสดงให้เห็นว่าสามารถจัดระบบทั้งหมดให้อยู่ในรูป เมทริกซ์ x เวกเตอร์ ได้
เกริ่นเนื้อหาถัดไป
- ในบทถัดไปจะกล่าวถึงแนวคิดสำคัญของพีชคณิตเชิงเส้นเพิ่มเติม เช่น เมทริกซ์, ดอทโปรดักต์ (dot product)
- หากสนใจก็มีการชวนให้ติดตาม
อ่านเพิ่มเติมและปิดท้าย
- มีลิงก์ Instagram สำหรับดูแหล่งข้อมูลและผลงานศิลปะเพิ่มเติม
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เห็นด้วยว่าเนื้อหาชัดเจนและมีประโยชน์ แต่ตัวเลขตัวอย่างที่ยกมาใช้ 1 และ 2 เพื่อแทนทั้งขนมปังและนมพร้อมกัน ทำให้พอมองในรูปเมทริกซ์แล้วแยกด้วยสัญชาตญาณได้ยากว่าเลข 1 ไหนคือขนมปัง และเลข 1 ไหนคือนม ถ้าใช้ตัวเลขที่ต่างกันไปเลยอย่าง 1, 2, 3, 4 ก็น่าจะทำให้ชัดเจนขึ้นมาก
ชอบช่วงท้ายของบทความมาก แต่การเริ่มต้นด้วย Gaussian elimination นี่ แม้จะหาคำที่เหมาะไม่เจอ แต่มันให้ความรู้สึกค่อนข้าง "ลึกลับ" นิด ๆ ควรมีโจทย์มาก่อนมากกว่า ("จะแก้ระบบสมการพร้อมกันยังไง?" "จะหาจุดตัดของเส้นตรงสองเส้นยังไง?") แล้วค่อยแสดงให้เห็นแบบกราฟิก จากนั้นค่อยแนะนำวิธีหรืออัลกอริทึม แบบนั้นรู้สึกสมเหตุสมผลกว่า ถ้าสลับกันจะเหมือนสอนกฎลูกโซ่ในแคลคูลัสก่อน โดยยังไม่อธิบายความหมายเชิงเรขาคณิต
ผู้เขียนเอง – น่าจะพูดถูกนะ ส่วน Gaussian elimination ผมเขียนในเชิงทบทวน เพราะคิดว่าผู้อ่านส่วนใหญ่น่าจะเคยเจอมาแล้ว และก็อยากเข้าเรื่องหลักให้เร็วหน่อย ถ้าใครรู้สึกว่าตรงนี้ยากก็อยากฟังฟีดแบ็กเพิ่มเติมเหมือนกัน อาจจำเป็นต้องอธิบายให้ช้ากว่านี้และละเอียดกว่านี้
ผมยังไม่ค่อยเข้าใจชัดอยู่ดีว่า "การที่เราทำ elimination ได้มันหมายความว่ายังไง?" แต่ (ผู้เขียน) วิธีที่คุณนำมุมมองแบบคอลัมน์เข้ามานั้นน่าสนใจมาก และมีประโยชน์มากสำหรับมือใหม่แบบผม<br>พูดเสริมอีกนิดว่า หนังสือ linear algebra มีอยู่มากมาย แต่เนื้อหาและลำดับการสอนต่างกันไปหมด เลยทำให้รู้สึกว่าวิชานี้ทั้งสอนยากและเข้าใจยาก เพราะแบบนี้แหละจึงยิ่งต้องการมุมมองที่หลากหลาย เนื่องจากไม่มีวิธีเดียวที่เหมาะกับทุกคน
ชอบบทความนี้มาก ถ้าตัวแปรที่แทนขนมปังกับนมใช้ตัวอักษรอื่นแทน x, y ก็น่าจะสับสนน้อยลง เพราะทีหลัง x, y ก็จะกลายไปเป็น x, y ของอีกแนวคิดหนึ่งบนกราฟ เช่น คาร์โบไฮเดรตหรือโปรตีน
ได้เห็นงานของ Aditya Bhargava อีกแล้ว เป็นแฟนมาตั้งแต่สมัย Grokking Algorithms แล้ว
เนื้อหาค่อนข้างดี ก่อนจะเรียนทั้งเทอมในมหาวิทยาลัย linear algebra เป็นเรื่องลึกลับสำหรับผมสุด ๆ สรุปออกมาได้ดีมาก<br>ถ้าผู้อ่านยังไม่คุ้นกับแนวคิดเรื่องเวกเตอร์ อาจจะช่วยอธิบายสั้น ๆ เพิ่มได้ว่าทำไมเวกเตอร์สองตัว (ขนาดและทิศทาง) ถึงแทนขนมปัง 1 ชิ้นกับนม 1 กล่องได้ และเราจะเลื่อนหรือบวกเวกเตอร์กันได้อย่างไร
อยากให้มีคอนเทนต์แบบนี้ในโลกมากขึ้น การทำคอนเทนต์สอนคณิตศาสตร์ให้ออกมาดีนั้นยากจริง ๆ เป็นเนื้อหาที่ยอดเยี่ยมมาก
ชอบมากทั้งวิธีอธิบายแบบภาพและวิธีสร้างแรงจูงใจ ตอนนี้กำลังเรียน linear algebra จากแหล่งอย่าง "The No Bullshit Guide to Linear Algebra" และคิดว่าค่อนข้างดี ถ้าใครมีคำแนะนำหนังสือ linear algebra แบบใช้งานได้จริงและนำไปประยุกต์ตรง ๆ ได้อีก ก็อยากให้ช่วยแชร์ เพราะหนังสือส่วนใหญ่มักจะเน้นทฤษฎีเกินไปหรือรู้สึกเข้าถึงยาก
ตอนนี้ผมก็กำลังดูตำรา LinAlg หลายเล่มอยู่เหมือนกัน เพราะสนใจสาย ML/AI เลยเข้าหาจากมุมนี้<br>ผมเรียนของ KA academy จนถึง linear algebra แล้วก็อ่านแหล่งอื่นกับตำราเล่มอื่นควบคู่ไปด้วย<br>คนมักจะแนะนำ 3B1B กับ Strang (คอร์ส LinAlg ของ MIT OCW) ซึ่ง 3B1B นั้นยอดเยี่ยมสำหรับสร้างสัญชาตญาณและเหมาะกับการเริ่มต้น แต่ถ้าจะเรียนจริงจังครั้งแรกผมว่ามันค่อนข้างเร็วไปนิด ส่วน Strang นั้นยอดเยี่ยมมาก แต่บางครั้งอาจออกนอกเรื่องในเลกเชอร์จนตามยาก ถึงอย่างนั้นก็ยังควรใช้เป็นสื่อเสริมอยู่ดี<br>LADR4e (Linear Algebra Done Right) ก็ดี แต่ส่วนพิสูจน์ยังยากจนผมตามไม่หมด<br>ยังมี 'Linear Algebra done wrong' กับหนังสือของ Hefferon ซึ่งก็เปลี่ยนไปเน้นการพิสูจน์ค่อนข้างเร็วเหมือนกัน น่าจะเหมาะมากสำหรับการเรียนรอบสองหรือรอบสาม<br>อีกอย่าง มีวิชาที่เรียกว่า 'abstract linear algebra' แยกต่างหากด้วย แต่ความซับซ้อนก็ไม่ได้ต่างจากตำรา linear algebra แบบดั้งเดิมมากนัก<br>เล่มที่ผมอ่านไปได้ค่อนข้างไกลคือ ROB101 textbook (https://github.com/michiganrobotics/rob101/blob/main/Fall%202021/Textbook/ROB_101_December_2021_Grizzle.pdf) โดยใช้เป็นแหล่งหลักจนถึงหัวข้อ linear independence และเรียนคู่กับเลกเชอร์ของ MIT Strang ด้วย<br>ROB101 อธิบายด้านการเขียนโค้ดได้ดีด้วย จึงเหมาะกับการคิดเชื่อมโยงกับการเขียนโค้ดใน ML/AI<br>นอกจากนี้ผมยังมีตำราคณิตศาสตร์ยุโรปตะวันออกอยู่สองสามเล่มไว้ใช้ทำแบบฝึกหัด<br>ช่วงหลังมานี้ผมกำลังทบทวนคอร์ส/ตำราที่ https://www.math.ucdavis.edu/~linear/ และก็ได้ประโยชน์มากจากโน้ตที่ https://math.berkeley.edu/~arash/54/notes/
หนังสือที่ผมอ่านแล้วรู้สึกน่าสนใจมากจริง ๆ คือ "Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares"<br>https://web.stanford.edu/~boyd/vmls/
คุณบอกว่า "เป้าหมายคือความเข้าใจในระดับที่ใช้ได้จริงและนำไปใช้ตรง ๆ ได้" เลยอยากรู้ว่าตั้งใจจะเอาไปใช้กับอะไรโดยเฉพาะ สำหรับผม การเรียนทฤษฎี (เช่น linear algebra) โดยมีแรงจูงใจเชิงใช้งานอย่างเดียวมันดูแปลกนิดหน่อย จริง ๆ อาจอ่านหนังสือประยุกต์ไปพร้อมกับเรียนทฤษฎีก็ได้ และถ้าถึงจุดที่ทฤษฎีจำเป็นจริง ๆ ไม่ว่าเนื้อหาจะยากแค่ไหน สุดท้ายก็ต้องเรียนอยู่ดี<br>ยกตัวอย่างเช่น linear algebra สำคัญมากสำหรับการเรียนกลศาสตร์ควอนตัม เพราะงั้นถ้านั่นคือเป้าหมาย ผมกลับคิดว่าเริ่มจากตำรากลศาสตร์ควอนตัมก่อนอาจดีกว่า
ผมก็หมายถึง "ความเข้าใจในระดับที่ใช้ได้จริงและนำไปใช้ตรง ๆ ได้" เหมือนกัน คิดว่า ML เป็นสาขาที่เหมาะมากสำหรับเอาไปใช้จริง และผมก็กำลังเตรียมทำซีรีส์ที่ว่าด้วยเรื่องนี้อยู่ด้วย
รู้สึกว่าควรพูดถึงซีรีส์ linear algebra ของ 3blue1brown ด้วย แม้จะยากกว่าบทความนี้ขึ้นมาอีกระดับหนึ่งเล็กน้อย แต่การอธิบายนั้นยอดเยี่ยมมากและยังเข้าถึงได้อยู่<br>https://youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab
วิดีโอของ 3B1B น่าทึ่งจริง ๆ แต่สำหรับผม วิดีโอ linear algebra ของเขาค่อนข้างเร็วไปนิด ซึ่งก็เป็นเหตุผลที่ผมเริ่มเขียนซีรีส์นี้
น่าทึ่งมากที่เฟรมเวิร์กกราฟิกที่ 3B1B ใช้นั้นเปิดเป็นโอเพนซอร์สด้วย<br>https://github.com/ManimCommunity/manim
ทุกครั้งที่อ่านบทความแนวนี้ ตอนแรกมักจะรู้สึกว่า "ว้าว! ในที่สุดก็มีคนที่อธิบายคณิตศาสตร์จนฉันเข้าใจได้แล้ว!" แต่พอถึงส่วน Gaussian elimination ก็เริ่มหลุดอีกแล้ว
พอเห็นชื่อ Josh Starmer ก็จะนึกถึงคำว่า "Bam!" ขึ้นมาอัตโนมัติ ไม่รู้มีใครจำหนังสือที่เขาอธิบาย machine learning แบบวาดรูปประกอบไปด้วยได้ไหม เมื่อก่อนผมก็ดูช่อง YouTube ของเขาบ่อยเหมือนกัน คอนเทนต์อธิบายแบบนี้ทำให้การเรียนสนุกขึ้นมากจริง ๆ