Matrix multiplication [ 1 ]

pongpanut osathitporn
pongpanut
Published in
3 min readOct 10, 2018
รูปจาก https://thatshelf.com/2017/03/22/the-development-slate-episode-55-reboot-roundtable-the-matrix-rebooted/

สวัสดีครับ ผมชื่อเพชรครับ ปัจจุบันเป็น Software developer อยู่ที่ SCB digital banking และเป็นนิสิตปริญญาเอก คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมคอมพิวเตอร์ ชั้นปีที่ 1 งานวิจัยที่ผมสนใจจะเป็นด้าน Machine learning, Deep learning

อยากเขียน Blog นี้ขึ้นมาเพื่อแบ่งปันความรู้ต่าง ๆ ที่ได้รับในช่วง explore หาข้อมูลเพิ่มเติมระหว่างศึกษาปริญญาเอก โดยผมได้รับโจทย์มาจากอาจารย์ให้ไปหาความรู้พื้นฐานเพิ่มเติม และอ่าน Paper ในขอบเขตที่ผมสนใจ

เรื่องแรกที่เริ่มทบทวนความรู้ก็คือ Linear Algebra นั่นเอง ซึ่งในงานวิจัยที่ผมสนใจได้นำองค์ความรู้ทางด้านนี้มาใช้อย่างมากมาย โดย course ที่ผมเข้าไปเริ่มเรียนนั้นเป็นของ Professor Gilbert strang แห่ง MIT(Massachusetts Institute of Technology) นั่นเอง หากท่านใดสนใจเพิ่มเติมสามารถ ศึกษา course ด้านล่างครับ

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

Matrix ตั้งต้นของเรามีดังนี้

รูปที่ 1 Matrix A และ Matrix B

และเราจะนำสอง matrix นี้มาคูณกัน

รูปที่ 2 Matrix A คูณ Matrix B

เราสมมุติว่าผลลัพธ์ที่ได้จากการคูณ Matrix A และ B เป็น Matrix C ดังนี้ครับ

รูปที่ 3 Matrix C ที่เป็นคำตอบ จาก การคูณระหว่าง Matrix A และ Matrix B
  • Note สิ่งที่เราต้องระวังก็คือ Dimension ของ Matrix ครับ Column ของ Matrix แรก ต้องเท่ากับ row ของ Matrix ที่สอง ดังนี้ครับ
รูปที่ 4 Dimension ของ C จากการคูณระหว่าง Matrix A และ Matrix B

วิธีที่ 1

โดยรูปแบบการคูณวิธีแรก จะอยู่ในลักษณะดังต่อไปนี้ครับ

รูปที่ 5 ตัวอย่างการคูณ Matrix วิธีที่ 1

จากโจทย์ด้านบนสามารถคิดได้ดังนี้

รูปที่ 6 การคูณ ตำแหน่งที่ C11

หรือสามารถเขียนออกมาเป็นสมการได้ดังนี้

รูปที่ 7 สมการการคูณ Matrix ณ.ตำแหน่ง cใดๆ ใน Matrix C

นั่นคือ ค่าของ c ในแถวที่ i คอลัมน์ที่ j สามารถหาได้จาก แถวที่ i ของ matrix A คูณกับ คอลัมน์ที่ j ของ Matrix B นั่นเอง

สมมุติว่า Matrix ที่ได้จากการคูณนั้น คือ Matrix C ดังนั้น ตำแหน่งที่ C11 มีค่าเท่ากับ 17 ดังรูปที่ 8

รูปที่ 8 ผลลัพธ์จากการคูณตำแหน่งที่ c11

หลังจากทำซ้ำครบทุก row และ column แล้วนั้นจะได้ Matrix C ดังรูปที่ 9

รูปที่ 9 Matrix C ที่ได้มาจากการคูณระหว่าง Matrix A และ Matrix B โดยวิธีที่ 1

วิธีที่ 2

วิธีนี้เราจะเน้นมุมมองการคูณในเชิงคอลัมน์ครับ โดย Prof.Gilbert strang ได้ให้คำนิยามไว้ดังนี้ครับ

Columns of C are combinations of columns of A

เรากลับมาดูที่ตัว matrix กันครับ

รูปที่ 10 ตัวอย่าง Matrix ที่ไม่เป็น square matrix

จากด้านบนจะเห็นได้ว่าคอลัมน์ ของ matrix B นั้น มีจำนวนคอลัมน์ เท่ากับ matrix C ดังนั้น เราลองเราลองนำแต่ละ คอลัมน์ ของ B เป็นตัวตั้งนะครับ และนำไปคูณกับสมาชิกทั้งหมดใน Matrix A เพื่อที่จะได้ผลลัพธ์ใน matrix C ดังภาพด้านล่างนี้ครับ

รูปที่ 11 การคูณในทุก column ของ matrix B เมื่อนำไปคูณกับ Matrix A จะได้ column ของ Matrix C

กลับมาที่โจทย์ของเราครับ โดยเราจะมาเริ่มการคูณ matrix โดยมุมมอง column กัน โดยจะเริ่มจากคอลัมน์ แรกก่อน (สีแดง)

รูปที่ 12 ตัวอย่างการคูณในคอลัมน์แรก

จากนั้นก็นำคอลัมน์ที่เราสนใจมาทำการคูณกับ Matrix A (นั่นคือคำนิยามที่ว่า Columns of C are combinations of columns of A นั่นเอง)

รูปที่ 13 การคูณคอลัมน์ที่ 1 ของ Matrix C
รูปที่ 14 การคูณคอลัมน์ที่ 2 ของ Matrix C
รูปที่ 15 การคูณคอลัมน์ที่ 3 ของ Matrix C

เมื่อนำทุกคอลัมน์มารวมกันก็จะได้ matrix C ที่เป็นคำตอบดังรูปที่ 16

รูปที่ 16 Matrix C ที่ได้มาจากการคูณระหว่าง Matrix A และ Matrix B โดยวิธีที่ 2

วิธีที่ 3

วิธีนี้เราจะเน้นมุมมองการคูณในมุมมองแถวของ Matrix ครับ โดยมีคำนิยามดังนี้

Rows of C are combinations of rows of B

จากตัวอย่าง Matrix ในรูปที่ 8 เช่นเดิม แต่เราจะมาคูณในมุมมองเป็นแถวดูครับ ดังรูปที่ 15

รูปที่ 17 การคูณในทุกแถวของ matrix B เมื่อนำไปคูณกับ Matrix A จะได้แถวของ Matrix C

เรามาลองทำการคูณจริงๆจากตัวอย่างของเรากันครับ ในแถวแรกของ Matrix A

รูปที่ 18 การคูณในทุกแถวของ matrix B เมื่อนำไปคูณกับ Matrix A จะได้แถวของ Matrix C

เมื่อเราทำการคูณกับทุกๆ แถวของ Matrix A จะได้ผลลัพธ์ดังนี้ครับ

รูปที่ 19 การคูณแถวที่ 1 ของ Matrix C
รูปที่ 20 การคูณแถวที่ 2ของ Matrix C
รูปที่ 21 การคูณแถวที่ 3 ของ Matrix C
รูปที่ 22 Matrix C ที่ได้มาจากการคูณระหว่าง Matrix A และ Matrix B โดยวิธีที่ 3

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

ปล. พึ่งเคยเขียนเป็นครั้งแรกครับ ถ้ามีอะไรผิดก็ขออภัยมา ณ ที่นี้และรบกวนช่วยแจ้งด้วยครับ

--

--