# Neural Network Layers

การทดลองนี้จะปูพื้นฐานความเข้าใจการทำงานของ AI พื้นฐานและการเริ่มต้นทำความเข้าใจการฝึกสอน AI เพื่อเป็นพื้นฐานในคาบต่อๆไป

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FXqttxWQkKq0qALo89v76%2FlThgdpFQ.jpeg?alt=media&#x26;token=b3835669-fdf7-4b11-a23c-1f70567f2db8" alt=""><figcaption></figcaption></figure>

## Introduction&#x20;

เริ่มทำการปูพื้นฐานเพิ่มความเข้าใจจาคาบที่แล้วกันก่อนในเรื่องของ AI และกระบวนการคิดและการตัดสินใจของ AI ก่อนที่จะทำการทำการแปลงความเข้าใจให้เป็นโค้ดภาษา C จากคาบที่แล้วเราได้รู้จัก AI และประเภทของ AI กันไปแล้ว วันนี้เราจะมาทำความเข้าใจกันในส่วนที่หลายคนอาจสงสัยว่าไอเจ้าก้อนกลมๆที่ยึดโยงกันเป็นโครงข่ายประสาทมันทำงานยังไงเพื่อให้สามารถนำไปต่อยอดงานอื่นๆในอนาคตได้  การทำงานของตัว AI ที่เป็น machine learning หรือ deep learning นั้นจะแตกต่างกันเพียงจำนวนของ hidden layer เท่านั้น ซึ่ง deep learning จะมี hidden layer มากกว่า 2 layer ขึ้นไปโดยจะมีองค์ประกอบดังนี้

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FE4Tlzmp7BsHD1QQ4tifh%2Fvx9A4WBw.gif?alt=media&#x26;token=d22d9a6a-a441-423c-a7ef-732ccfc04112" alt=""><figcaption></figcaption></figure>

1. Input layer เป็นชั้นของการรับข้อมูลที่ทำการป้อนเพื่อให้ AI ทำการตัดสินใจหรือเป็นการฝึกสอนให้ AI เข้าใจในสิ่งที่เราสอน
2. Hidden layer เป็นชั้นของการวิเคราห์ข้อมูลซึ่งอาจจะมีการจัดการหรือเตรียมข้อมูลเช่น resize หรือ sorting data เพื่อนำไปทำการ Convolution ในการช่วยให้สามารถตัดสินใจได้ดีขึ้น
3. Output layer เป็นชั้นของการนำข้อมูลที่ผ่านการประมวลผลแล้วไปทำงานในส่วนอื่นต่อ

\
ซึ่งการทำงานเป็นแต่ละ layer แบบนี้เป็นการทำงานในส่วนของ AI ในปัจจุบันโดยจะมีการเติมฟังก์ชั้นที่ช่วยในการจัดการข้อมูล หรือช่วยในการประมวลผลได้ดีขึ้นทั้งในส่วนของชั้นประมวลผล เช่น [Conv](https://machinelearningmastery.com/convolutional-layers-for-deep-learning-neural-networks/), [Gaussian](https://arxiv.org/abs/1904.04620) และชั้นของการนำไปใช้งานต่อ เช่น [Softmax](https://en.wikipedia.org/wiki/Softmax_function),[ReLu](https://machinelearningmastery.com/a-gentle-introduction-to-sigmoid-function/) เป็นต้น&#x20;

\
แต่ก่อนอื่นจะมาทำความเข้าใจพื้นฐานของแต่และเจ้าเม็ดกลมๆ ว่ามันเรียนรู้ยังไงทำไม ซึ่งมันคิดได้เพียงแบบเป็นเหตุเป็นผล ไม่สามารถคิดสร้างสรรค์ได้เหมือนมนุษย์ เพราะว่าพื้นฐานของตัวเจ้าเม็ดกลมๆที่ต่อกันหรือ multi-layer Neural network นั้นมีสิ่งที่เรียกว่า “Backpropagation” โดยเราจะใช้เว็บนี้ประกอบในการสอน -> [Link](https://poloclub.github.io/cnn-explainer/)

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FK5cq22Vd1babg4SQ0Zlt%2FvedVVsMA.gif?alt=media&#x26;token=9cd0df9b-c5bf-4555-8382-d31fc491a10e" alt=""><figcaption></figcaption></figure>

ตัวอย่างนี้จะเป็นการอธิบายการทำงาน neural network 3 layer ด้วยอินพุท 2 ตัว โดยในแต่ละ neuron จะประกอบด้วยข้อมูลที่เข้ามา 2 ตัวดังภาพ โดยภายใน f(e) จะถูกเรียกว่า “neuron activation function”

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FNC7CF3qnKMofTkXAZf76%2FmXPTZeIw.gif?alt=media&#x26;token=b6d1ae9a-b0b1-407a-bce7-a10a86dff6e7" alt=""><figcaption></figcaption></figure>

โดยการจะสอนให้ neural network เข้าใจในบางสิ่งเราต้องทำการ training ชุดข้อมูลที่เราจะป้อนจากภาพตัวอย่าง

* ชุดข้อมูลที่เราป้อนไปคือ x1,x2&#x20;
* ผลลัพธ์ที่เราคาดหวัง คือ y
* ค่า y=f(e) ซึ่งเป็นค่า non-linear ที่ได้จากผลลัพธ์ของการวิเคราะห์

ในแต่ละรอบจะมีการ weight หรือการปรับข้อมูลให้สามารถรองรับข้อมูลที่เราป้อนหรือข้อมูลใหม่ๆได้&#x20;

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FDGYvCZm9R9HQ7ZbZkQvp%2FNel87BTw.gif?alt=media&#x26;token=0e67a9c6-252c-4ac3-a835-7ddba293f75a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FROtQeuZ4sqaTXZgHeJMw%2Fn4VA_fOQ.gif?alt=media&#x26;token=1339066f-4452-412b-96f7-a7ff70fa8176" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FIWOB3r58MMUkhoDhPSOZ%2FQURZpXEw.gif?alt=media&#x26;token=28fd4d39-6d73-4c5d-83d8-fbf4ac481682" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FX73c1JkT4KXo7MCZFd1P%2F0DmKMmNg.gif?alt=media&#x26;token=0cb573b3-28b9-423b-a75a-5c9d743e5cfb" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2F5X7tlHqCVbe93BE6FE1x%2FW6VoFkTg.gif?alt=media&#x26;token=c7ad5cd9-52d7-423b-9fae-332d692dd980" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FyhWFjJazr2sJ82njgCGU%2FguVbx89Q.gif?alt=media&#x26;token=9c069f05-b711-49af-8365-a575a2553fee" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2Fim8dXLrB0qiSnMmII1SY%2F4B2tn_vw.gif?alt=media&#x26;token=bf44d1c3-fbe0-4001-808e-2d07a7c78f5b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FpOmV4sgOERpjEREkibb5%2FEoPxHgUg.gif?alt=media&#x26;token=7ae3aca7-1758-4aea-937c-6eb5cd79ad8c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2F7s4JOnDilKgepw5Pe8NV%2FlQdK_hcQ.gif?alt=media&#x26;token=cb95da1d-02fc-44a6-8db7-ef954c3b2862" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2Fded2A1VFXXOn6N8IQzZg%2FVlnrFHsg.gif?alt=media&#x26;token=3907d26e-95ef-494d-a923-dc732e0494c7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2F3bD2XtWinRLOX3fHwefu%2Fys10HhuA.gif?alt=media&#x26;token=0f33c78f-c289-49e8-ae63-edf1981c0a6c" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FFd0KBvm36FZo9lREIxED%2FluMLHqSA.gif?alt=media&#x26;token=bf46c458-36c3-4e47-a36c-008070d5e3f2" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2Fs89bfzLPsyWIn87z0qCS%2FE_76oocg.gif?alt=media&#x26;token=04664db5-0071-4e6c-a7f6-c1b0d090baa5" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FE56F1AQF67cf8VIl8bLW%2FylbQJwwQ.gif?alt=media&#x26;token=7bb1b1d0-f1d7-4362-be64-9e92894b0708" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FdOFhuCgxcZ0K8XasvBrj%2FGWjPuX1w.gif?alt=media&#x26;token=f264e25e-aaaa-4c44-a33c-7b20d5afbfb4" alt=""><figcaption></figcaption></figure>
