반응형
- 1. 하용호 @kakao
- 2. 하용호 용 호 오랜만이죠? 이 짤?
- 3. 딥러닝이뜨긴떴습니다.
- 4. 딥러닝가능케한3대장 빅데이터 GPU 알고리즘 이제는식상한용어지만 하여간있다! 다나와가서 사면된다! 아..
- 5. 뭔가옛날에뉴럴넷은배웠는데.. 혼자서공부하려고인터넷을뒤져보지만 빡셉니다… 예습,자습,복습-인간이할수없는세가지일
- 6. 일단단어들부터보통이아닙니다. ReLU DropOut MaxPooling Stochastic Gradient Decent Convolution SoftMax
- 7. 근데이것도한번보시죠 McFlurry FrenchFries McMuffin Hash Browns BigMac
- 8. 근데이것도한번보시죠 맥플러리 프렌치프라이 맥머핀 해시 브라운 빅맥 사실별거아닌건데외국인만난것처럼당황해서그렇습니다.
- 9. 이시간을통해,딥러닝도 편안하게느끼게되셨으면좋겠습니다. 조선시대조상님이맥도날드메뉴보면 얼마나겁날까요? 근데사실그냥먹는이야기.별거없죠. 그분들도금방적응하실겁니다.
- 10. 딥러닝이글케좋아?
- 11. 컴퓨터에게그림을주고 개인지고양이인지판단하게하시오? 문제? 이프로그램어떻게짜지?
- 12. (이제는식상한짤…이짤을쓰는내가부끄럽네요)
- 13. 딥러닝으로만든코드를봅시다.
- 14. basedonhttps://github.com/fastai/courses
- 15. 정확도98.35%!!
- 16. 엄청잘맞춘다!!
- 17. 사진을보고개랑고양이를구분하는 신박한일을,달랑저짧은코드로할수있다!
- 18. 패러다임쉬프트 기존의코딩: 조건을라인바이라인으로긴코드로써내려가는일 앞으로의코딩: 조건을학습모델의여러가중치로변환하는일 IF ~~~~~~~~~~ IF ~~~~~~~~~~ IF ~~~~~~~~~~ IF ~~~~~~~~~~ 인풋 아웃풋 30.3 51.2 18.3 -30.2 14.9 7.9 인풋 아웃풋
- 19. basedon https://github.com/fastai/courses 딥러닝의정수중의하나:VGG16 강의가끝날때쯤다이해갈겁니다^^
- 20. 일단뉴럴넷복습부터
- 21. 일단뉴럴넷의한컴포넌트는일케생겼었죠 sigmoid
- 22. 요런게모여서이런게되었었습니다.
- 23. 계속층을쌓아나갈수도있습니다. 이렇게깊어지면딥뉴럴넷(DNN)이라하죠
- 24. 사람의뇌신경을닮은뉴럴넷이니 사람이하는거다할수있지않을까?! 그런데잘안됨
- 25. 세가지문제가있었다. 학습이잘안돼! 겨우되어도융통성이없다?! Underfitting 덜하거나 Overfitting 과하거나 (하여간적당히가없어요) 도대체학습은언제끝나는건가?Slow 느리거나
- 26. Underfitting Overfitting 학습이잘안돼! 겨우되어도융통성이없다?! 덜하거나 과하거나 Slow 도대체학습은언제끝나는건가? 느리거나 차근차근해결해봅시다!
- 27. Underfitting Overfitting 학습이잘안돼! 겨우되어도융통성이없다?! 덜하거나 과하거나 Slow 도대체학습은언제끝나는건가? 느리거나
- 28. 뭐를전달하는가? 현재내가틀린정도를‘미분(기울기)’한거 출력입력 입력 출력 미분하고,곱하고,더하고를역방향으로반복하며업데이트한다. 뉴럴넷의학습방법Backpropagation (사실별거없고그냥“뒤로전달”)
- 29. 근데문제는? 여기의미분(기울기)는뭐라도있다.다행 근데여기는기울기0..이런거중간에곱하면뭔가뒤로전달할게없다?! 그런상황에서이걸반복하면?????? 우리가activation함수로sigmoid 를썼다는것
- 30. Vanishinggradient현상: 줄좀맞추자줄좀..줄..줄..줄.. 교장샘끝줄학생 레이어가깊을수록업데이트가사라져간다. 그래서fitting이잘안됨(underfitting) 학습이잘안됨
- 31. ReLU 이녀석은양의구간에서전부미분값(1)이있다! 죽지않는activationfunc을쓰자! (RectifiedLinearUnits) 줄좀맞추자 교장샘끝줄학생 줄좀맞추자줄좀맞추자줄좀맞추자줄좀맞추자 사그라드는sigmoid대신 끝줄학생까지이야기가전달이잘되고위치를고친다!
- 32. sigmoid->ReLU=뒤로전달오케이! 전달하다가,사그라져버린다(vanishinggradient) 문제? 해결!
- 33. Underfitting Overfitting 학습이잘안돼! 겨우되어도융통성이없다?! 덜하거나 과하거나 Slow 도대체학습은언제끝나는건가? 느리거나
- 34. GradientDecent lossfuncion의현가중치에서의기울기(gradient)를구해서 loss를줄이는방향으로 업데이트해나간다. 기존뉴럴넷이가중치parameter들을 최적화(optimize)하는방법
- 35. 뉴럴넷은loss(orcost)function을 가지고있습니다.쉽게말하면“틀린정도” 현재가진weight세팅(내자리)에서, 내가가진데이터를다넣으면 전체에러가계산됩니다. 현지점의기울기 (gradient) 거기서미분하면에러를줄이는방향을알수있습니다. (내자리의기울기*반대방향) 그방향으로정해진스텝량(learningrate)을 곱해서weight을이동시킵니다.이걸반복~~ weight의업데이트 = 에러낮추는방향 (decent) XX 한발자국크기 (learningrate)
- 36. 아그렇구나. ..잠깐?이상한게지나갔는데?
- 37. 현재가진weight세팅(내자리)에서, 내가가진데이터를다넣으면 전체에러가계산됩니다. 현지점의기울기 (gradient) 에러낮추는방향 (decent) 한발자국크기 (learningrate) 거기서미분하면에러를줄이는방향을알수있습니다. (내자리의기울기*반대방향) 그방향으로정해진스텝량(learningrate)을 곱해서weight을이동시킵니다.이걸반복~~ XXweight의업데이트 = “내가가진데이터를다넣으면?” 트레이닝데이터가몇억건인데… 한발자국갈때마다몇억건을넣어? 뉴럴넷loss(orcost)function을 가지고있습니다.쉽게말하면“틀린정도”
- 38. 어느천년에다하는가. GD보다빠른옵티마이저는없을까? StochasticGradientDecent!!
- 39. SGD의컨셉:느린완벽보다조금만훓어보고일단빨리가봅시다. (이거랑 닮음. 하지만 done도 better도 perfect도 실패하는 우리네 삶.. ㅠㅠ)
- 40. 학습데이터 Gradient Decent Stochastic Gradient Decent 작은 토막마다 일단 1스텝간다. 전부다 읽고나서 최적의 1스텝 간다. full-batch mini-batch mini-batch mini-batch mini-batch mini-batch
- 41. GDvsSGD 목적지 모든 걸 계산(1시간)후 최적의 한스텝 일부만 검토(5분) 틀려도 일단 간다! 빠른 스텝! 6스텝 * 1시간 = 6시간 11스텝 * 5분 = 55분 < 1시간 Gradient Decent Stochastic Gradient Descent 최적인데 너무 느리다! 조금 헤매도 어쨌든 인근에 아주 빨리 갔다!
- 42. 걸음마다batch로전부다계산하려니 GD가너무오래걸린다 SGD로mini-batch마다움직여 같은시간에훨씬더많이진행해서해결! 문제? 해결!
- 43. 다시생각해봐도이건,굴곡많은산을 좋은오솔길을찾아잘내려가는일과참비슷
- 44. 근데미니배치를하다보니와리가리(?)방향문제가있다. 딱봐도더잘갈수있는데 훨씬더헤매면서간다. 훑기도잘훑으면서, 좀더휙휙더좋은방향으로갈순없을까?
- 45. 스텝사이즈(learningrate)도문제가된다. 보폭이너무작으면오래헤매고(파란라인) 보폭이너무크면,오솔길을지나친다(녹색라인)
- 46. 이과가또.jpg
- 47. 산을잘타고내려오는것은 어느방향으로발을디딜지 얼마보폭으로발을디딜지 두가지를잘잡아야빠르게타고내려온다. SGD를더개선한멋진optimizer가많다! SGD의개선된후계자들
- 48. 여러가지방법이있다! http://imgur.com/NKsFHJb
- 49. 산내려오는작은오솔길잘찾기(Optimizer)의발달계보 SGD Momentum NAG Adagrad RMSProp AdaDelta Adam Nadam 스텝계산해서움직인후, 아까내려오던관성방향또가자 일단관성방향먼저움직이고, 움직인자리에스텝을계산하니 더빠르더라 안가본곳은성큼빠르게걸어훓고 많이가본곳은잘아니까 갈수록보폭을줄여세밀히탐색 보폭을줄이는건좋은데 이전맥락상황봐가며하자. 종종걸음너무작아져서 정지하는걸막아보자. RMSProp+Momentum 방향도스텝사이즈도적절하게! 전부다봐야한걸음은 너무오래걸리니까 조금만보고빨리판단한다 같은시간에더많이간다 Adam에Momentum 대신NAG를붙이자. 스 텝 사 이 즈 스텝방향 GD 모든자료를다검토해서 내위치의산기울기를계산해서 갈방향을찾겠다. NesterovAcceleratedGradient
- 50. 잘모르겠으면Adam!
- 51. SGD가빠른데좀헤맨다 SGD의개선된버전을골라 더빠르고더정확하게! 문제? 해결!
- 52. Underfitting Overfitting 학습이잘안돼! 겨우되어도융통성이없다?! 덜하거나 과하거나 Slow 도대체학습은언제끝나는건가? 느리거나
- 53. 열심히뉴럴넷에게고양이 뚱뚱하니까고양이아님 갈색이니까고양이아님 귀처졌으니까고양이아님 를가르쳤더니.. 융통성이라곤눈꼽만큼도없다! Overfitting
- 54. 뉴럴넷에게융통성을기르는방법은? 가르칠때부터,좀가리면서가르친다! DropOut! 학습시킬때, 일부러정보를누락시키거나 중간중간노드를끈다.
- 55. 얼굴위주 색지우고 귀빼고
- 56. dropout으로 일부에집착하지않고 중요한요소가무엇인지 터득해나간다.
- 57. 과적합으로융통성이없다. DropOut으로 유연성을획득시킨다. 문제? 해결!
- 58. Underfitting Overfitting 학습잘되고 융통성도생겼다! 덜하거나 과하거나 Slow 이젠빠르고 느리거나 문제해결완료!
- 59. DropOut ReLU SGD Adam Adam Vanishinggradient LearningRate mini-batch RmsProp 딥러닝을가능하게한개념들을배웠다! 등등등~
- 60. 깊은뉴럴넷의학습이가능해졌다. 이제이것들을잘쌓아서일을해보자.
- 61. 문제의유형에따라적절한아키텍쳐를! 스냅샷성데이터 snapshot 시퀀스성데이터 sequence 이미지,영상,바둑(?) CNN Convolutional neuralnetwork 음성,언어,주식가격,맥락 LSTMrecurrent neuralnetwork LongShort TermMemory orRNN
- 62. 아까봤던VGG도 유명한CNN구조중의하나. 이바닥에유명한녀석으로 AlexNet(구형), VGG(인기많고많이씀,그냥믿고쓰는허브솔트같은느낌), GoogleNet(첨에인기없고,뒤에Inception버전업되고좀씀), ResNet(레이어짱많음, 최근많이쓰임)
- 63. 이런거다어디서나오나요? 영상인식관련천하제일무술대회가있습니다. TheImageNetLargeScaleVisualRecognitionChallenge(ILSVRC) 길어서보통ImageNet대회라고합니다.ㅎㅎ 연구자들이자웅을겨루며,좋은구조가많이나왔습니다.
- 64. 최신 과거
- 65. VGG는구조가직관적이고 성능도상당히쓸만해서 대중적으로많이쓰입니다. (다른많은구조의재료가되곤합니다)
- 66. VGGNET의구조 Imagefromhttp://file.scirp.org/Html/4-7800353_65406.htm 이해를하기위해,우리가그림을본다고상상해봅시다.
- 67. 그림을눈앞1cm거리에서본다고생각해보자. 처음에는점과선,이상한질감몇개밖에모르겠다.
- 68. 점과선,질감을충분히배우고,조금떨어져서보자. 점과선이질감이합쳐져삼각형,동그라미,북실함이보인다.
- 69. 삼각형,원,사각형,북실함등을조합해서보니 뾰족귀와땡그란눈과복실한발을배웠다.
- 70. 더멀리서보니,그것들이모아져있다.이것은? 고양이!!
- 71. 이방식을흉내내면컴퓨터도그림을잘볼수있겠지? 조각을보고,패턴을익히고,점점멀리서조합을본다.
- 72. 계산량측면에서도! 이미지에서는인근픽셀끼리만상관있지않나? 가까운것들끼리만묶어서계산하면의미도있고 계산량도줄겠는데? 이런생각을해봤다. 보통뉴럴넷은서로가서로에게전부다연결되어있는데 이러다보니맞춰야할weight들도많아..
- 73. Convolution박스로밀고나면,숫자가나옴 그숫자를Activation(주로ReLU)에넣어나온값 Convolution:특정패턴이있는지박스로훓으며마킹 이걸로이미지지도를새로그린다. 위아래선필터,좌우선필터,대각선필터,이런질감필터, 요런질감필터,동그라미필터등등여러가지“조각”필터로 해당패턴이그림위에있는지확인한다.
- 74. 이게Conv필터한개예제 이런걸밀고다닌다.
- 75. 사소하지만중요한거하나.Zeropadding 귀퉁이가짤리다보니,사이즈유지를위해conv전에0을모서리에보태고한다.
- 76. Convolution의멋진점은 간단한필터들이쌓여가면서 엄청나게복잡한필터를만들어나가는것 이런필터를뉴럴넷이알아서찾아주는것
- 77. Convolution의좋은점 부품을조립해더복잡한부품을만든다 Convolution Convolution Convolution 가 로 세로 필터수
- 78. https://arxiv.org/pdf/1311.2901.pdf
- 79. 점점더멀리서보는법? 우리가멀어져도되지만 그림을줄여도되겠구나?
- 80. 사이즈를점진적으로줄이는법MaxPooling nxn(Pool)을중요한정보(Max)한개로줄인다. 선명한정보만남겨서,판단과학습이쉬워지고 노이즈가줄면서,덤으로융통성도확보된다. 4 3 3 2 1 0 0 8 0 1 2 2 2 7 9 1 4 8 7 9 보통2x2로화면전역에적용한다 stride라고해서 좌우로몇칸씩뛸지설정.보통(2x2) 그러면절반짜리 이미지가완성!
- 81. 패턴들을쌓아가며점차복잡한패턴을인식한다(conv) 사이즈를줄여가며,더욱추상화해나간다(maxpooling)
- 83. 눈 눈 코 입 귀 목 티 티 티 후반부에는추상화부품으로남는다. 우리는궁극적으로 이런녀석을가지게된다. 시작은이렇게256*256 픽셀을다보았어야해도 Conv와 MaxPooling 의반복
- 84. 막판,추상화가끝난데이터를FC에넣어판단한다 (fully connected layer)
- 85. 눈 눈 코 입 귀 목 티 티 티 눈과코와귀가있고 티를입고있으니 최종판단은FullyConnectedLayer에게먹여서하게한다. “사람” “고양이” “개” “말” X X O X
- 86. 뉴럿넷에게답을회신받는3가지방법 output을 그냥받는다. output에 sigmoid를먹인다. output에 softmax를먹인다. O/X 기냐?아니냐? Category 종류중에요건뭐냐? Value 이게얼마가될거같니?
- 87. 그래서1000개종류분류하는 아키텍쳐는 끝이SoftMax로되어있다.
- 88. 이제다시처음의코드를봅시다!
- 90. Conv블럭은 1)사이즈안줄어들게가장자리채워주고 2)3x3사이즈패턴으로, filter갯수만큼패턴을찾겠구나. activation은ReLU를쓰네? 3)그런Conv를layes수만큼겹겹히쌓는구나. 4)그렇지.충분히했으면사이즈줄여줘야지
- 91. Conv+MaxPooling덩어리를 필터갯수늘리면서 그림사이즈는점점줄어들게 쌓아올리는구만. 이걸FC에먹이려고좌악펴주고
- 92. 1)출력4096짜리, FullyConnectedNN이군 2)ReLU썼고 3)그렇지.오버피팅방지로DropOut들어가야지 FC블럭은
- 93. 마지막엔1000개출력인데, 그중하나고르는(Category)니까softmax구만 그렇지.길찾는법은믿고쓰는Adam이지.
- 94. Clear!!!!!!
- 95. 축하드립니다! 여러분은지금실제돌아가는코드를 왜그런지를알면서 읽어낼수있게되었어요! 인스톨완료!
- 96. 부분부분만공부하면어렵게느껴지던딥러닝 왜그렇게만들어졌는지를따져보면구조가그려집니다. 구조를알면어렵지않아요. (LSTM편과강화학습편은다음에또선보일게요 그리고저희사람뽑습니다.곧공고할게요~~)
반응형
'IT 둘러보기' 카테고리의 다른 글
[메조미디어] Z세대의 금융 트렌드, 자이낸스 리포트 (269) | 2023.10.18 |
---|---|
[NDC 19] 시스템 기획서 잘 쓰는 법 (212) | 2023.10.18 |
손코딩뇌컴파일눈디버깅 (109) | 2023.10.18 |
알아두면 쓸데있는 신비한 딥러닝 이야기 (259) | 2023.10.17 |
실무자를 위한 인과추론 활용 (35) | 2023.10.17 |
카카오의데이터파이프라인 윤도영 (3) | 2023.10.17 |
1000만 글로벌 유저를 지탱하는 기술과 사람들 (5) | 2023.10.17 |
신입 개발자 생활백서 (1) | 2023.10.17 |