본문 바로가기

Programming Project/Pytorch Tutorials

Pytorch 머신러닝 튜토리얼 강의 1 (Overview)


투명한 기부를 하고싶다면 이 링크로 와보세요! 🥰 (클릭!)

바이낸스(₿) 수수료 평생 20% 할인받는 링크로 가입하기! 🔥 (클릭!)

이 글의 시리즈는 Sung Kim 님의 PyTorchZeroToAll 영어 강의를 한글로 다시 정리한 글이며 원본 재생목록은 https://www.youtube.com/watch?v=SKq-pmkekTk&list=PLlMkM4tgfjnJ3I-dbhO9JTw7gNty6o_2m 에서 보실 수 있습니다.


저의 개인적인 기호에 따라 약간의 의역과, 생략 혹은 첨가가 이루어졌으며 일부 코드를 pytorch 0.4.0버전 기준으로 스스로 재 작성 할 예정입니다.





이 글은 기본적인 대수학과 확률론, 그리고 기본적인 python 지식만을 가지고 있다면 충분히 따라갈 수 있습니다.


이 시리즈의 글을 모두 학습하고 나면 기본적인 머신러닝적 지식 뿐만 아니라 그것을 Pytorch 로 코딩할 수 있게 될 것입니다.








Human Intelligence



우선 들어가기에 앞서, Human Intelligence라는 것에 대해 생각 해 봅시다.


Human Intelligence(인간 지능)란 무엇일까요?


친구가 점심에 무엇을 먹을지 맞추는 어떤 사람을 예로 들어 생각 해 봅시다.


어떻게 그 사람은 친구의 결정을 예측할 수 있을까요?


보통의 경우 그 친구가 무엇을 좋아한다거나, 지금 무엇이 그 친구의 가까이 있다거나 하는 '정보(information)'를 바탕으로 친구의 결정을 예측할 수 있을 것 입니다.


이 결정은 '정보'로부터 만들어진 '추론(inference, prediction)'이라고 할 수 있습니다.


'정보' 로 부터 '추론' 하는 것은 이것 뿐만 아니라

내일 무엇을 입는지, 고양이 사진을 보고 고양이 사진인걸 알아낸다던지, 더 나아가서는 10시간 공부한 친구는 몇점의 시험점수를 받을 수 있을지 예측하는 등에 대한 여러가지 일들을 의미할 수 있습니다.









Machine Learning


머신러닝은 동작할 때, 정확히 앞서 말한 과정을 거칩니다.



'정보 (information)'를 가지고 -> 머신러닝이 동작해서 -> 무엇인지 '추론(Prediction)' 하는 과정을 통해 정답을 맞추게 됩니다.


그렇다면 어떻게 기계가 이런 것들을 맞추게 될 수 있을지 생각 해 봅시다.


보통의 경우 기계는 단순한 업무만을 처리할 수 있기 때문에, 이런 이미지가 어떤 것을 의미하는지 알 수 없습니다.




그렇기 때문에 우리는 머신러닝 모델(Model)을 설계해서 많은 데이터(Data set)를 통해 머신러닝을 학습(training)시켜야 합니다.


모델을 학습시키고 난 후에는 우리는 학습된 모델에게 새로운 데이터가 어떤것을 의미하는지 물어보면 머신러닝 모델은 그 질문에 대답할 수 있게 됩니다.





Deep Learning vs Machine Learning vs AI






AI 와 머신러닝과 딥러닝은 어떻게 다를까요?


AI는 보통 지능을 가지고 있다면 다 AI라고 부릅니다.


컴퓨터에게 지능을 가지게 하기 위해서 이용할 수 있는 많은 방법이 있고, 그중 한가지 방법이 머신러닝 입니다.


머신러닝을 구현하기 위해서는 선택할 수 있는 많은 세부적인 알고리즘이 있는데


딥 러닝은 뉴럴넷이라는 것을 사용하는 알고리즘들을 딥러닝이라고 부릅니다.


딥 러닝이라고 불리는 이유는 뉴럴넷이 여러 Layer(나중에 배우게 될 것입니다)들을 깊게 쌓기 때문에 때문에 딥(Deep)러닝이라고 부르는 것입니다.






그렇다면 왜 우리는 딥러닝 딥러닝 하게 된 것일까요?

그 이유는 딥러닝이 다양한 분야에서 잘 동작하기 때문입니다.


이미지 분석, 문장 번역, 이미지 변환 등 다양한 방법에서 기존의 다른 방법보다 잘 동작합니다.




Deep Learning을 배우기 좋은 이유


아직은 딥러닝이 굉장히 힘들지는 않습니다.


기본적인 수학적 지식과 파이썬 코딩 능력이 있다면, 한 1년정도 깊게 파면 어느정도 따라갈 수 있을 정도의 학습량이 됩니다.


그리고 또한 많은 프레임워크들이 나와있기 때문에 손쉽게 프로그래밍 할 수 있습니다.


이 강의 시리즈에서는 Pytorch를 이용해서 딥러닝을 배워보도록 하겠습니다.





Pytorch


파이토치는 딥러닝 코딩을 가능하게 해주는 프레임워크입니다.


Pytorch의 장점은 다음과 같습니다.


 - 유연하고 , 깔끔하며 디버깅하기가 편합니다.


 - neural network가 실제로 동작하듯이 코딩을 하기 때문에 더욱 직관적으로 코딩할 수 있습니다.





그렇다면 이제 pytorch.org 를 들어가서 pytorch를 설치 해 봅시다.


그 후 다음 명령어들을 통해서 파이썬이 제대로 동작하는지 확인 해 봅시다.



참고로 여기의 버전은 0.2.0이지만 이 글을 작성하는 현재 기준으론 0.4.0버전이 나왔으며, 이전 버전보다 몇가지 편리해진 부분이 있습니다. 


그렇기 때문에 가능한 부분에 있어서는 최신 버전을 따라 코드는 기존 강의와 다르게 작성하는 부분이 있을 것입니다.





Topics



이 강의에서는


- Linear, Logistic, Softmax models

- Deep Neural Net

- Convolutional Neural Net

- Recurrent Neural Net


등의 주제를 다루며 이 모든것을 Pytorch로 코딩해볼 것 입니다.