matrix

Matrix คืออะไร? (กันแน่) : ตอนที่ 1

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

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

เรียนไปทำไม?

ถ้าจะบอกว่า Matrix มีประโยชน์มากสำหรับการคำนวณที่ซับซ้อน ไม่ว่าจะเป็น AI, Computer Graphic, วิศวกรรม, Network Graph ตามที่อธิบายในคลิปนี้

มันก็เป็นเหตุผลที่ดู ok แต่ใช่ว่าคนทั่วไปจะต้องเข้าใจ Matrix นะ เพราะการทำงานในชีวิตจริงของคนทั่วไปมันไม่ได้ใช้เลย (แม้จะบังคับให้เด็กเรียนในสมัยมัธยมก็เถอะ)

ส่วนเหตุผลที่ผมอยากเรียนรู้ Matrix ในตอนนี้ ก็คือ ถ้าเข้าใจมันดูเท่ดี เวลาไปเจอบทความที่ซับซ้อนจะได้อ่านเข้าใจ (มันเป็นเหมือนภาษาอีกภาษานึงที่ถ้าเข้าใจก็เจ๋งดีอ่ะ)

แต่เหตุผลที่สำคัญที่สุด คือ อยากเอาชนะความรู้สึกที่ฝังใจตั้งแต่ตอนเด็กๆ ที่เรียน Matrix ยังไงก็ไม่เข้าใจซักที 555

เริ่มจาก Vector ก่อน

ก่อนที่เราจะเรียนรู้ Matrix ให้เข้าใจแบบเห็นภาพนั้น เราจะต้องเข้าใจเรื่องของ Vector ให้ดีซะก่อนครับ

Vector ในที่นี้คือการบอกทิศทางของลูกศรที่เริ่มจากจุด Originไปยังจุดที่กำหนด เช่น

  • ถ้าเป็น 2 มิติ แกน (x,y) อาจเป็น จาก (0,0) ไปยังจุด (3,5)
  • ถ้าเป็น 3 มิติ แกน (x,y,z) อาจเป็น จาก (0,0,0) ไปยังจุด (3,5,2) เป็นต้น

ซึ่งหลักการของ 2 มิติกับ 3 มิติก็เหมือนๆ กันแหละ แต่ 3 มิติมันซับซ้อนกว่า และวาดรูปประกอบยาก ดังนั้นผมจะยกตัวอย่างแค่แบบ 2 มิตินะครับ ถ้าเข้าใจ2 มิติแล้ว 3 มิติก็ไม่ใช่เรื่องยาก

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 1
รูปนี้คือ vector (3,5) นั่นคือ vector ที่เริ่มจากจุด 0,0 แล้วชี้ไปยัง x=3 , y=5

หลักการพื้นฐานของการคำนวณ Vector

  • การบวก Vector จะเปรียบเสมือนเอาลูกศร 2 อันมาต่อกัน แล้วดูว่าสุดท้ายชี้ไปที่จุดไหน Vector ผลลัพธ์จะเริ่มจาก Origin ถึงจุดนั้นๆ
    • vector (a,b) รวมกับ vector (c,d) = vector (a+c,b+d) นั่นเอง
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 2
Vector เขียว (3,5) เกิดจาก Vector น้ำเงิน (2,1) + Vector ส้ม (1,4) โดยเปรียบว่าเอา Vector มาต่อลูกศรกันไปจนจบ = Vector (2+1,1+4) นั่นเอง
  • การเปลี่ยนขนาด Vector ด้วยการคูณเลข Scalar : การคูณเลขไปทั้งพิกัด x และ y ของ vector เป็นการทำให้ Vector เปลี่ยนขนาดไป
    • c * vector(a,b) = vector(c*a,c*b) นั่นเอง
    • ถ้าเลขบวก ก็จะอยู่ทิศเดิม
    • ถ้าเลขติดลบ ก็จะเป็นการกลับทิศ
    • ถ้าคูณเลขขนาด >1 ก็จะขยายขนาด
    • ถ้าคูณเลขขนาด <1 ก็จะลดขนาดได้
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 3
Vector เขียว (6,10) คือเอา Vector น้ำเงิน (3,5) มา Scale 2 เท่า หรือ = (3*2, 5*2)

Vector ทุกอันสามารถเขียนอยู่ในรูปของ Vector 1 หน่วยพื้นฐานได้

  • ในแกน x จะมี vector i ที่เป็น vector 1 หน่วยที่ชี้ไปทางขวา หรือ (1,0) เป็น vector พื้นฐาน
  • ในแกน y จะมี vector j ที่เป็น vector 1 หน่วยที่ชี้ขึ้นบน หรือ (0,1) เป็น vector พื้นฐาน
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 4

แปลว่าถ้าเราพูดถึง vector (3,5) มันก็สามารถบอกได้ว่า

  • มันคือ 3 เท่าของ vector พื้นฐาน i รวมกับ 5 เท่าของ vector พื้นฐาน j ต่อลูกศรกัน
  • หรือ 3i+5j นั่นเอง
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 5

Matrix คือ รูปแบบหนึ่งของ Linear Transformation

จริงๆ แล้วเราสามารถมองได้ว่า Matrix คือการเปลี่ยนแปลงแกนอ้างอิงของ Vector 1 หน่วยพื้นฐาน จากการที่ i ชี้ไปที่ (1,0) และ j ชี้ไป (0,1) ให้ชี้ไปที่อื่นแทน (โดยที่ถ้าแกนใหม่มีจุด Origin ที่เดิม และ grid ของแกนใหม่ยังคงเป็นเส้นตรง)

ซึ่ง vector ผลลัพธ์จะถูกแปลงหน้าตาไปตามแกนอ้างอิงใหม่ทันที นั่นคือ มีการ scale ด้วย factor เดิม แต่ใช้แกนใหม่ เช่น

ตัวอย่างที่ 1 : ถ้าเดิมทีเคยมี vector (3,5) อยู่ แล้วเราบอกให้

  • เปลี่ยน vector i จาก (1,0) ให้กลายเป็น (2,0) แทน ขยายขนาดเป็น 2 เท่า
  • vector j คงเดิมที่ (0,1)

แบบนี้ vector ผลลัพธ์ก็จะกลายเป็น Concept นี้

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 6
  • 3 เท่าของ i ตัวใหม่ + 5 เท่าของ j ใหม่
  • 3(2,0) + 5(0,1)
  • (6,0) + (0,5) ต่อลูกศรกัน หรือ (6+0,0+5) นั่นเอง
  • ลูกศรที่ชี้ไปพิกัด 6,5 หรือ ยืดยาวไปในแกน x 2 เท่าจากเดิม (ส่วนแกน y สูงเท่าเดิม)
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 7

ตัวอย่างที่ 2 : ถ้าเดิมทีเคยมี vector (3,5) อยู่ แล้วเราบอกให้

  • เปลี่ยน vector i จาก (1,0) ให้กลายเป็น (0,1) แทน (หมุนทวนเข็ม 90 องศา)
  • เปลี่ยน vector j จาก (0,1) ให้กลายเป็น (-1,0) แทน (หมุนทวนเข็ม 90 องศา)

แบบนี้ vector ผลลัพธ์ก็จะกลายเป็นแบบนี้

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 8
  • 3 เท่าของ i ตัวใหม่ + 5 เท่าของ j ใหม่
  • 3(0,1) + 5(-1,0)
  • (0,3) + (-5,0) ต่อลูกศรกัน หรือ (0-5,3+0) นั่นเอง
  • ลูกศรที่ชี้ไปพิกัด -5,3 หรือ หมุนทวนเข็ม 90 องศาด้วยนั่นเอง
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 9

ซึ่งจริงๆ แล้วการบอกให้ vector พื้นฐานเปลี่ยนไป ก็คือการเอา Matrix มาคูณนั่นเอง

  • โดยฝั่งซ้ายของ Matrix คือทิศทางใหม่ของ vector i
  • โดยฝั่งขวาของ Matrix คือทิศทางใหม่ของ vector j
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 10

เช่น การเปลี่ยน vector i จาก (1,0) ให้กลายเป็น (2,0) ส่วน vector j คงเดิมที่ (0,1) สามารถแทนด้วย Matrix นี้

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 11

ดังนั้นในตัวอย่างแรก เราสามารถเอา Matrix ดังกล่าว มาคูณกับ Vector เดิมคือ 3,5 จะได้ผลลัพธ์เป็น 6,5 ดังนี้ได้เลย มีความหมายเหมือนกัน แต่ทำใน Excel ง่ายมาก เพราะใช้ MMULT ได้เลย

Matrix

ในตัวอย่างที่สอง เราสามารถเอา Matrix มาคูณกับ Vector เดิมคือ 3,5 จะได้ผลลัพธ์เป็น -5,3 ดังนี้

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 12

ถ้าลองใส่เลขให้เห้นชัดๆ ว่าเวลาเอา Matrix มาคูณ Vector เป็นยังไง ก็จะเป็นแบบนี้

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 13
  • 17 มาจาก 1*5 + 2*6 (เพราะ 1 ถูกขยายไป 5 เท่าในทิศแกน x และ 2 ถูกขยายไป 6 เท่าในทิศแกน x)
  • 39 มาจาก 3*5 + 4*6 (เพราะ 3 ถูกขยายไป 5 เท่าในทิศแกน y และ 4 ถูกขยายไป 6 เท่าในทิศแกน y)

หรือจะมองแบบเดิมๆ ก็คือเป็นแบบนี้ ก็เข้าใจง่ายดี

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 14

ถ้าเรารู้แล้วว่า Matrix คูณกับ Vector คือการ Transform Vector นั้นๆ แล้ว Matrix คูณ Matrix มันคืออะไรล่ะ??

Matrix คูณกับ Matrix คืออะไร?

หากเราลองคิดดูดีๆ ว่าเวลาเราเอา Matrix มาคูณกับ Vector มันคือการ Transform 1 ที แล้วถ้าเราจะ Transform 2 ทีล่ะ??
มันก็คือการเอา Matrix มาคูณด้วย 2 ทีรวดยังไงล่ะ!!


ซึ่งก็เปรียบเสมือนการใช้ Matrix 1 ตัว ที่เก็บ Effect ของการ Transform ทั้ง 2 รอบเข้าไปแล้วนั่นเอง (การ Transform อ่านจากขวาไปซ้าย นั่นคือ Transform แบบเหลืองก่อน แล้วค่อย Transform แบบน้ำเงิน)

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 15

ซึ่งเราจะหา Effect สุทธิของการ Transform ได้ (หรือผลคูณ Matrix ได้) ก็ต้องเข้าใจก่อนว่า ตกลงแล้ว i และ j สุดท้ายถูกเปลี่ยนให้กลายเป็นอะไรไปแล้ว??

  • i ใหม่ไปไหน ตอนแรก i (1,0) ถูก Matrix เหลืองแก้ทิศทางให้เป็น (a,c) ก่อน
    • ให้เรามองว่าเกิด vector (a,c) ขึ้นมา เพราะ vector ผลลัพธ์จากการ Transform ครั้งแรก คือ (a,c)*1 + (b,d)*0 = (a,c) นั่นเอง
    • จากนั้น (a,c) ก็ถูก Matrix น้ำเงิน Transform Vector นั้นอีกรอบ ทำให้เกิดผลลัพธ์เป็น vector (e,g)*a + (f,h)*c
    • = (a*e+c*f , a*g+c*h)
  • j ใหม่ไปไหน ตอนแรก j (0,1) ถูก Matrix เหลืองแก้ทิศทางให้เป็น (b,d) ก่อน
    • ให้เรามองว่าเกิด vector (b,d) ขึ้นมา เพราะ vector ผลลัพธ์จากการ Transform ครั้งแรก คือ (a,c)*0 + (b,d)*1 = (b,d) นั่นเอง
    • จากนั้น (b,d) ก็ถูก Matrix น้ำเงิน Transform Vector นั้นอีกรอบ ทำให้เกิดผลลัพธ์เป็น vector (e,g)*b + (f,h)*d
    • = (b*e+d*f , b*g+d*h)
  • พอเอาผลลัพธ์กลับมาเขียนในรูป Matrix (ฝั่งซ้ายคือ i ใหม่ ฝั่งขวาคือ j ใหม่) ก็จะได้ว่า แต่ละช่องเป็นดังนี้ ซึ่งเหมือนกับสูตรที่เคยท่องกันสมัยเด็กๆ นั่นแหละ
  • ดังนั้นการที่เราเอา Matrix คูณกัน ก็คือการสั่งให้ Transform vector หลายๆ รอบนั่นเอง
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 16

ซึ่งแน่นอนว่าเราสามารถใช้ MMULT ในการคูณ Matrix ใน Excel ได้เลย ง่ายกว่ามานั่งคูณเองมากๆ

Matrix คืออะไร? (กันแน่) : ตอนที่ 1 17
Matrix คืออะไร? (กันแน่) : ตอนที่ 1 18

ซึ่งสังเกตว่า การ Transform หากสลับลำดับกัน Vector ผลลัพธ์ก็จะไม่เหมือนกันนะครับ (-5,6) กับ (-10,3) นั่นก็แปลว่า Matrix ไม่มีคุณสมบัติการสลับที่การคูณนั่นเอง

ตอนต่อไป

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

แหล่งเรียนรู้เพิ่มเติม

ซึ่งความรู้ที่ได้ในบทความนี้ หลักๆ เกิดจากการดูคลิปวีดีโอ series นี้ครับ ถ้าใครอยากเรียนรู้แบบเต็มๆ ล่วงหน้าไปก่อนก็ลองดูได้เลย

Power BI Workshop 2024 ตุลาคมนี้
อบรม In-House Training

Feedback การใช้งาน AI Chatbot