Early Development of Artificial Neural Network

ANN intro-01

สวัสดีผู้ที่หลงเข้ามาอ่านทุกท่าน บทความนี้เป็นการเขียนบทความครั้งแรกของเจ้าของบล็อก ขอเท้าความถึงที่มาของบทความนี้ก่อนว่าเนื่องจากเจ้าของบล็อกได้ลงเรียนวิชาหนึ่งที่ชื่อว่า Artificial Neural Network เจ้าของบล็อกเลือกลงวิชานี้ด้วยเหตุที่ว่า “ชื่อวิชามันฟังดูเท่ดี-_-” แต่เมื่อได้ลงวิชานี้ไปแล้ว เจ้าของบล็อกเลยอยากจะสรุปความรู้ที่ได้จากวิชานี้ แต่จะสรุปลงกระดาษก็กลัวจะหายก็เลยเป็นที่มาของบทความนี้ พรรณนามายาวละ เข้าเรื่องกันดีกว่า

เป็นเรื่องปกติสำหรับการเรียนวิชาใดๆหัวข้อแรกที่มักจะพูดถึงก็คือประวัติคร่าวๆของเรื่องนั้น ๆ และแน่นอนครับวิชานี้ก็เช่นกัน Artificial Neural Network หรือ ANN (ต่อไปนี้ขอเรียกว่า ANN นะ) เริ่มต้นขึ้นโดย นักจิตวิทยาชาวอเมริกันที่มีชื่อว่า Frank Rosenblatt เห็นอาชีพเค้าเป็นนักจิตวิทยาก็สงสัยใช่มั้ยละ แล้วเค้าคนนี้มาเกี่ยวข้องกับ ANN ได้ยังไง จริงๆ แล้วนาย Frank Rosenblatt คนนี้เค้าเป็นคนที่ศึกษาและเก่งในหลายด้านมาก ๆ ไม่ว่าจะเป็นด้านคอมพิวเตอร์ คณิตศาสตร์ และบลาๆ นาย Frank Rosenblatt คนนี้ได้ทำการศึกษาการทำงานของสมองและเซลล์ประสาท จากนั้นนาย Frank Rosenblatt คนเดิมเพิ่มเติมคือพยายามสร้างโมเดลทางคณิตศาสตร์ที่เลียนแบบการทำงานของเซลล์ประสาทจนได้มาเป็นสิ่งที่เรียกว่า Perceptron ในปี 1957-1959

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

1280px-Neuron.png

ภาพโดย Interiot~commonswiki ที่มา https://commons.wikimedia.org/wiki/File:Neuron.svg

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

  1. Dendrite ทำหน้าที่รับสั­­ญญาณประสาทจาก Axon ของเซลล์ประสาทอื่น ๆ เข้าไปสู่ตัวเซลล์ประสาท
  2. Cell body ที่ส่วนนี้จะนำสัญญาณที่ได้จาก Dendrite ทั้งหมดมาประมวลผล หากสัญญาณที่รับเข้ามามากพอจะทำให้เซลล์ประสาทอยู่ในสถานะถูกกระตุ้น และส่งสัญญาณประสาทไปยังเซลล์ประสาทอื่นๆ
  3. Axon จะทำหน้าที่ในการส่งสัญญาณประสาทที่ถูกส่งมาจาก Cell body ไปยัง Dendrite ของเซลล์ประสาทถัดไป
  4. การเชื่อมต่อระหว่าง Dendrite และ Axon ของเซลล์ประสาทจะแข็งแรงขึ้นเมื่อมีการส่งสัญญาณประสาทผ่านเส้นทางเดิมบ่อยๆ และเมื่อเส้นทางแข็งแรงก็จะส่งผ่านสัญญาณประสาทได้ง่ายขึ้น

และจากการทำงานของเซลล์ประสาทนี่แหละครับที่ทำให้เกิด Perceptron ซึ่งเป็นโมเดลทางคณิตศาสตร์ที่มีรูปร่างหน้าตาตามรูปข้างล่างนี้

perceptron 1-01-01

โดยเมื่อนำเจ้า Perceptron ไปเทียบกับเซลล์ประสาทจะได้ดังนี้

  • Dendrite ~ input : x[1], x[2], x[3], ..., x[D]
  • Axon ~ output: y
  • ความแข็งแรงระหว่างการเชื่อมต่อ Dendrite และ Axon ~ weight : w[1], w[2], w[3], ..., w[D]
  • “หากสัญญาณที่รับเข้ามามากพอจะทำให้เซลล์ประสาทอยู่ในสถานะถูกกระตุ้น” ~ Perceptron จะอยู่ในสถานะ activated เมื่อ

 \sum_{d=1}^{D}w[d]*x[d] \geq \tau_{0}

  • จากสมการสถานะ activated ของ Perceptron จัดรูปสมการใหม่จะได้เป็น

\sum_{d=1}^{D}w[d]*x[d] - \tau_{0} \geq 0

  • เขียนให้อยู่ในรูปของฟังก์ชัน y = f(a) จะได้เป็น

y = f(\sum_{d=1}^{D}w[d]*x[d] - \tau_{0})

  • เมื่อ y = f(a) คือ activation function

f(a)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

  • เนื่องจาก a คือค่าที่ไปกระตุ้น f จึงเรียกว่า activation
  • เขียน Activation ใหม่จะได้เป็น

a = \sum_{d=1}^{D}w[d]*x[d] + b

  • เมื่อ b = - \tau_{0} เราจะเรียก b ว่า bias

แล้วเราก็จะได้ Perceptron ใหม่จากการจัดรูปสมการที่มีหน้าตาแบบนี้

perceptron 2-01

เราสามารถสรุปสิ่งที่เกี่ยวข้องกับ Perceptron ได้ดังนี้

  • Perceptron’s output : y = f(a)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.
  • Activation : a = \sum_{d=1}^{D}w[d]*x[d] + b
  • Perceptron’s input : x[1], x[2], x[3], ..., x[D]
  • Input weight : w[1], w[2], w[3], ..., w[D]
  • Bias : b

ตอนนี้เราก็ได้รู้ทฤษฎีพื้นฐานของ Perceptron กันแล้ว ต่อไปเจ้าของบล็อกจะให้ดูตัวอย่างการทำงานของ Perceptron ด้วยวงจรตรรกศาสตร์ง่าย ๆ ที่ทุกคนน่าจะรู้จักนั่นคือ OR ที่มีการทำงานดังตารางต่อไปนี้

or table

จากตารางการทำงานของวงจร OR เราจะได้ Perceptron ที่ทำงานได้ตามวงจร OR ดังนี้

perceptron OR-01.png

ทดสอบวงจรด้วยอินพุต x[1], x[2] ที่มีค่าเป็น 0 และ 0

  • Perceptron’s input : x[1] = 0, x[2] = 0
  • Input weight : w[1] = 5, w[2] = 5
  • Bias : b = -4
  • Activation :

a = \sum_{d=1}^{D}w[d]*x[d] + b

a = 5(0) + 5(0) + (-4)

a = -4

  • Perceptron’s output :

y = f(a)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

y = f(-4)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

y = 0

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

การมาของ Perceptron ที่เป็นแนวคิดของ ANN ได้สร้างความตื่นเต้นให้วงการ AI เป็นอย่างมาก

แต่ในปี 1969 นักวิทยาศาสตร์สาขา AI ชื่อ Marvin Minsky ได้ออกหนังสือ Perceptrons: An Introduction to Computational Geometry โดยมีเนื้อหาที่กล่าวถึง ANN ว่าสามารถทำได้แต่งานง่ายๆ แค่ โมเดล Exclusive-OR ยังไม่สามารถทำได้ โดยใช้ one-layer perceptron เป็นตัวแทนของ ANN โดยหลังจากมีหนังสือของ Marvin Minsky ออกมานั้น ศรัทธาเกี่ยวกับ Perceptron และ ANN ก็ลดลงแบบดิ่งเหว และได้พาศรัทธาต่อวงการ AI ลดลงไปด้วย ช่วงเวลานี้รู้จักกันในชื่อ “AI Winter”

คราวนี้เรามาพิจารณาเนื้อหาที่ว่า ANN ไม่สามารถโมเดล Exclusive-OR ได้ โดยเริ่มจากตารางการทำงานของ Exclusive-OR ดังนี้

xor taable.PNG

แล้วมาพิจารณา Perceptron ซึ่งเป็น one-layer perceptron ที่มี 2 อินพุตดังรูปข้างล่างนี้

perceptron 1 layer XOR-01.png

จะเห็นว่าเราไม่สามารถหาค่าน้ำหนัก (weight) ที่ทำให้ Perceptron ตัวนี้ทำงานได้ตามโมเดลของ Exclusive-OR (ถ้าสงสัยว่าจริงมั้ย สามารถลองทดสอบดูได้นะ) แสดงว่า Marvin Minsky นั้นถูก… แต่ ANN นั้นไม่จำเป็นต้องมี 1 layer เพราะว่าต้นแบบของ ANN คือสมองของคนก็ไม่ได้มี 1 layer

หลายคนคงมีคำถามต่อไปว่าแล้วถ้าใช้ Perceptron ที่มากกว่า 1 layer สามารถโมเดล Exclusive-OR คำตอบคือได้ครับ และใช้เพียง 2 layer ก็เพียงพอสำหรับ Exclusive-OR ด้วย โดยดูได้ตามรูปด้านล่างนี้เลย

perceptron 2 layer XOR-01

เรามาทดสอบวงจรด้วยอินพุต x[1], x[2] ที่มีค่าเป็น 0 และ 0

ที่โหนด 1

  • Perceptron’s input : x[1] = 0, x[2] = 0
  • Input weight : w[1] = -30, w[2] = 30
  • Bias : b = -20
  • Activation :

a = \sum_{d=1}^{D}w[d]*x[d] + b

a = -30(0) + 30(0) + (-20)

a = -20

  • Perceptron’s output :

y = f(a)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

y = f(-20)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

y = 0

ที่โหนด 2

  • Perceptron’s input : x[1] = 0, x[2] = 0
  • Input weight : w[1] = 30, w[2] = -30
  • Bias : b = -20
  • Activation :

a = \sum_{d=1}^{D}w[d]*x[d] + b

a = 30(0) - 30(0) + (-20)

a = -20

  • Perceptron’s output :

y = f(a)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

y = f(-20)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

y = 0

ที่โหนด 3

  • อินพุตในโหนดที่ 3 จะเป็นเอาท์พุตจากโหนดที่ 1 และ 2
  • Perceptron’s input  : z[1] = 0, z[2] = 0
  • Input weight : w[1] = 30, w[2] = -30
  • Bias : b = -20
  • Activation :

a = \sum_{d=1}^{D}w[d]*z[d] + b

a = 30(0) + 30(0) + (-20)

a = -20

  • Perceptron’s output :

y = f(a)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

y = f(-20)=\left\{\begin{matrix} 0 & when & a < 0\\ 1 & when & a \geq 0 \end{matrix}\right.

Y = 0

ผลลัพธ์ที่ได้ก็ตรงกับการทำงานของ Exclusive-OR ในตาราง แสดงว่า ANN สามารถโมเดล Exclusive-OR ได้ สำหรับอินพุตที่เหลือก็เหมือนเดิมครับผู้อ่านทุกท่านสามารถนำไปทดลองคิดได้เองนะครับ

สำหรับการสรุปเนื้อหาจากวิชา Artificial Neural Network ในพาร์ทของ Early Development of Artificial Neural Network ก็คงมีเพียงแค่นี้ หวังว่าผู้ที่หลงเข้ามาอ่านจะได้ความรู้จากบทความนี้ และอย่างที่บอกไปแล้วบทความนี้เป็นบทความแรกของเจ้าของบล็อก ผิดพลาดประการใด เจ้าของบล็อกขออภัยไว้ ณ ที่นี่ด้วย และหากผู้ที่หลงเข้ามาอ่านท่านใดมีข้อแนะนำก็สามารถคอมเม้นไว้ได้นะครับ เจอกันบทความหน้า…. ถ้ามีโอกาสนะครับ

Advertisements

One thought on “Early Development of Artificial Neural Network

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s