Introduction to Deep Learning CNN #1

boom626
3 min readOct 12, 2019

--

subject:AI for IT (520341–2560) Date: 10/10/2019

เรียน🤨

Deep Learning คือ Neural Network ที่มีlayerมากว่า 2 ขึ้นไปมีhidden layer ลึกหลายๆ layer เป็นตัวหลักของงานด้าน AI , Machine Learning แต่ถ้าเราใช้โดยไม่ปรับโครงสร้างจะมีประสิทธิภาพในการเรียนรู้ไม่ค่อยดี จึงควรปรับDeep Learningโดยถ้าทำlayerที่เยอะๆต้องจัดการกับ weight วิธีเดิมweightจากnodeหนึ่งไปอีกnodeทุกเส้น Deepเยอะ weightก็จะเยอะ ในความเป็นจริงมีDeepเยอะ

key: เด้น=เส้นเชื่อม ซึ่งมี weight (parameter) โดยจะเชื่อมไปทุกๆ input ทุกความเป็นไปได้

ใน layer ที่เป็น Deep Learningจริงๆ จะไม่ใช้ เด้น แต่จะใช้วิธีการ CNN (Convolutional Neural Network) ในการจัดการข้อมูลที่เข้ามา

Single channel

CNN จะทำการสร้างkernel (หรือแผ่นfilter) ขึ้นมา ขนาด 2มิติ จริงๆมีทั้ง 1 2 3 มิติ แต่โดยทั่วไปใช้ 2 มิติ เนื่องจากcnnเกิดขึ้นพร้อมกับงานทางด้านรูปภาพ, Computer Vision ดังนั้นลักษณะinputที่เข้ามาจะเป็นภาพ2มิติ ถ้าสามารถแปลงinputใดๆเป็น2มิติได้ ก็สามารถเข้าcnnได้ อย่างเช่น เสียง เสียงถ้าเป็นไฟล์ .wav จะเป็น 1 มิติ ถ้าสามารถแปลงเป็น 2 มิติได้ก็เข้าcnnอย่างทำ Fourier transform

kernel (หรือแผ่นfilter) เป็นแผ่นที่ใช้เลื่อนยังข้อมูลที่เข้ามา อย่างเช่น มองเป็นภาพขนาด 5*5 ,kernel 3*3 ทำการเลื่อนที่ละpixelซึ่งมีข้อมูลอยู่ข้างใน เลื่อนไปเรื่อยๆ(slide อาจเลื่อนที่ละ หลายๆpixelก้ได้ แต่โดยปกติจะเลื่อนที่ละ1pixel )จนครบ ในแต่ละครั้งก็จะเอาข้อมูลจากแผ่นkernalไปคูณกับแผ่นที่เป็นinputเข้ามา อย่างเช่น

ตัวอย่างที่แผ่นkernalทาบpixelแรกของข้อมูลinput

จากรูป kernelแรกเป็น0 กับ pixelแรก3 =0*3 =0 คูณเรื่อยๆ แล้วนำผลการคูณแต่ละตัวใน9ช่องที่ทาบมาบวกกัน =0+3+4+0+0+0+0+1+4 =12.0 คือช่องแรกของoutput

วิธีการดังกล่าวคือวิธี CNN แผ่นkernelคือweight แต่ไม่ต้องเชื่อมแบบเด้น ทำการslideในภาพ ซึ่งมีการพิพิสูจน์แล้วว่ามันดีกว่า ปรัหยัด เร็ว มีประสิทธิภาพดีกว่าวิธีการใช้เด้นแบบเดิม

Multi-channel

จากรูป เป็นภาพสีที่มี 1 channel โดยปกติภาพมี3 channel :R G B เพราะงั้นภาพinputที่เข้ามาสามารถมีมากกว่า 1 channelได้

สมมุตินี่คือinputที่เข้ามามีหลายchannelในที่นี้ 3 channel (อาจมีมากกว่านี้ก้ได้) นำ channelทาบกับภาพของแต่ละchannel ทำการslide (slide 1 ทีได้จุด 1 จุด)

ก็จะได้ kernel 3*3 ของภาพแต่ละchannel ก็จะได้ทั้งหมด 3 แผ่น (kernal ทาบ channel)

นำ 3 แผ่น มาบวกกัน จะได้outputออกมา

ตัวอย่าง แต่ละแผ่นchannelที่ซ้อนๆไปข้างหลัง และมีkernel(สามารถกำหนดได้ว่ามีกี่ชุด)ในที่นี้มีชุดเดียว=1แผ่นkernelสำหรับ1channel ทาบเรื่อยๆ ทาบแล้วก็จะได้ข้อมูล1ชุดมาบวกกันแต่ละpixel จึงได้outputออกมาขนาดเท่าเดิม

Convolution : Stride and Padding

ในการslideเราสามารถPad(เติม)ได้ คือทำการเติมช่องว่าง เติมbit 0 เข้าไป เพื่อที่จะให้ได้ขนาดตามที่เราต้องการ ถ้าทำการทาบโดยที่ไม่Padที่ขอบ จากรูปจะทาบได้ทั้งหมดเพียง kernel 3*3 =9 pixel ซึ่งถ้าอยากได้ดังรูปตัวอย่าง kernel 5*5 pixel ต้องเติมPad แล้วslideด้วย kernel 3*3 นั่นเอง

Transposed Convolution (Deconvolution) =ส่วนกลับ CNN

ถ้าเรามีinputขนาดเล็กต้องการkernelขนาดใหญ่ ก็จะทำการกำหนดkernelให้มีขนาดใหญ่กว่าinput แล้วPad เลื่อนไปเรื่อยๆ

input เหมือนภาพๆหนึ่งแล้วPadด้วยมีkernelเลื่อนเรื่อยๆ จนได้outputออกมา ซึ่งมีขนาดใหญ่กว่า ภาพinputนั้น

ปัจจุบันนำวิธีการดังกล่าวมาใช้ปรับภาพจากที่มีความละเอียดต่ำให้มีความละเอียดสูงขึ้น เป็นอีกเทคนิคในการปรับ up scale เล็กให้ใหญ่

จากรูป ภาพมีขนาด 2*2 เช่นกัน แต่จับแยกจากที่เคยอยู่ติดกัน เติมที่เหลือด้วยค่า 0 เป็นการ up scale

Matrix multiplication for convolution : from a Large input image to a Small output image

สามารถแปลงkernelเป็นmatrixได้ เพื่อคำนวณง่ายขึ้น อย่างเช่นมีkernel 3*3ทาบบนinput แล้วได้output 2*2 (แบบไม่Pad) slide ไปข้างใน ชนขอบก็หยุด

ทำเป็นmatrix จับต่อดังรูป ส่วนที่เป็นช่องว่าก็ใส่ค่า 0 ยืดแล้วทำ matrix * matrix ก็จะได้ outputดังรูป

ประโยชน์ของการทำเป็น matrix คือ นำไปคำนวณใน GPU ได้เร็ว และ up scaleได้ปรับความระเอียดของภาพจากความละเอียดต่ำให้สูงขึ้น

Matrix multiplication for convolution : from a Small input image to a Large output image

วิธีอัพ up scale….

ถ้าเราtain model ค่าweight จะอยู่ในkernel แล้วจับยืดเป็นmatrixแล้วทรานสโพส(สลับแถว คอลัมม์)

key: model ที่ tainแล้วคือweight =weight เกิดจากการปรับตอนนี้มีการ tain

เอาmodel ที่ tainแล้วไปคูณกับinput ก็จะได้เป็นoutput เล้วเอาoutputจาก 1มิติ ทำเป็น 2 มิติ ก็จะได้ภาพที่up scaleขึ้น

แต่ละchannel เราสามารถเพิ่มจำนวณ filterได้ด้วย

ต่อ #2 ส่วนของงาน

ทั้งหมดนี้คือเพื่อการศึกษาแต่เพียงเท่านั้น…

นางสาวธารารัตน์ ชุ่มบุญชู 07600626

--

--