유머천국 코하비닷컴
https://cohabe.com/sisa/282864

딥러닝, 머신러닝의 기초 [1편]

관심있는 학생분들이나 직장인분들, 취미로 도전해보고 싶으신 분들에게 쓰는 글입니다.

제가 생각할때 딥러닝, 머신러닝 시작을 위한 권장 연령은 최소 고1 이상입니다.


개요 : AI라는 큰 범주 안에 머신러닝이 있고 머신러닝 안에 딥 러닝이 있습니다.
딥 러닝이 없었다면 지금의 머신러닝, AI란 개념은 말을 하지도 못할거라 생각합니다.
학계에서 딥 러닝은 뛰어난 성과를 자랑함에도 불구하고 
이 성과는 운좋게 얻어걸린 것이라며 인정하지 않는 일부 학자들도 있습니다.

1. 수학을 알아야 딥 러닝 코딩이 가능하다. (예:미분, 적분, 통계, 선형대수학) 영어를 할줄 안다면 칸아카데미, 
아니라면 고등학교 미,적분 혹은 대학수학을 가르치는 인강을 찾아보는것도 괜찮다. 

2. Programming Language ⇒ C, C++, Python 은 기본이고 더 나아간다면 Go, Scala, Ruby도 있을수 있겠다. 
배울수 있는곳은 유튜브, Udacity, Udemy, Coursera 등등
한국은 아직 자바가 대세다. 
구동속도 C > J에이브이a > Python
코딩편의성 C

3. OS=> Linux(리눅스가 딥러닝 트레이닝시 제일 빠르다) 한국에서는 Cent OS, Red hat계열을 많이쓰지만 
외국은 Ubuntu를 사용하고 Ubuntu를 사용하는 이유는 NVIDIA가 Ubuntu에 맞게 최적화를 해놓음.

4. 수학을 알아도 수학코딩하는 방법을 모른다면 극소수를 제외하면 코딩이 사실상 힘들다. 
[코딩더매트릭스] 이 책을 추천.

5. Framework ⇒ Tensorflow, Caffe, Caffe2, Torch, Theano 등 
Tensorflow를 많이 사용하는 이유는 
수학코딩이 간편하고 라이브러리도 많고 많은 사람들이 사용하기 때문에 예제가 많음. 
단점은 멀티 GPU를 많이 사용시(예 : CPU 2 + GPU 8) 원하는 성능이 떨어짐. 
서버 1개에 CPU 2개 GPU 4장 쓴다면 텐서플로우가 쓰기에 무난함. 
텐서플로우가 Multi-GPU에 약하다는것은 topology 때문.
이것으로 날새울수도 있을것 같지만 기초단계니까 여기까지. 관심있으신 분들은 링크에 멀티 GPU 부분 참조. https://www.tensorflow.org/tutorials/deep_cnn 

Caffe2는 Facebook과 NVIDIA가 협업하여 Volta에 맞추어 최적화를 진행하여 기대가 상당히 높아짐. 

AWS는 IoT에 적용을 위해서 MXNet을 밀고있는중

MS는 Azure를 통해 SaaS나 PaaS쪽 시장을 노리고 있으며 CNTK가 머신러닝에서 
두각을 나타내는것을 기대하고 있고 실제로 머신러닝 컨설팅도 많이 진행하고 있음.
AWS랑 경쟁자라고 보는것이 좋을듯. 

각 프레임워크의 장, 단점은 논문으로 쓸정도로 가능하지만 내용이 길어질까봐 질문하시면 댓글로...

6. Algorithm => RNN(시계열 데이터 처리하는 방식, 예: 자연어, 음성), 
CNN(예 : 이미지 인식), GAN(위조해서 진본과 경쟁을 시켜 발전시키는 모델, 이 모델은 진짜모델과 위조모델간의 균형이 중요), 
RNN+CNN, LSTM(전공자들에게도 너무 복잡하니 GRU를 사용하도록 하자), 
GRU(NYU 조경현 교수님이 공동발표한 LSTM을 간소화 한 모델)

7. 영어를 모른다면 최신기술의 빠른습득이 사실상 불가능하다. 논문 및 최신기술이 다 영어다. 
중국어를 원어민처럼 할경우는 희망이 있을수도 있다. 바이두의 중->영, 영->중 번역기가 워낙 좋다고 한다.
나도 영어 못하는 동료들에게 알려주기가 힘들다. 기술이 너무 빠르게 영어로 매일매일 나와서 나 혼자 읽고 이해하며 넘어가기 바쁘다.

8. Jim Mchugh(엔비디아 부사장)가 그랬지만 지금 이 시기는 시작단계에 불과하며 기술은 매일 진화하고 있다.

9. 텐서플로우 관심있거나 머신러닝 기초에 대해서 더 궁금하면 페북 TensorflowKR 추천

10. 자신이 프레임워크를 뚝딱 만들정도의 천재가 아니라면 협업이 어느때보다 중요한 시기이다.

11. 내가 개인용 연구를 하고싶다 할때 추천하는 GPU는
1070, 1080ti, 1080, 1060 6GB, 1050Ti 순이다. 
GPU 메모리양은 많은 양을 트레이닝때 매우 큰 도움이 된다.

기업의 연구원이라면 24시간 돌려도 괜찮은 서버용 GPGPU NVIDIA Tesla를 추천한다. 
GTX 시리즈는 단기간에 짧게 사용하기는 괜찮지만 내구성이 안좋다.
관련 링크

12. 현재 딥 러닝, 머신러닝 하드웨어에서 엔비디아는 절대 넘을 수 없는 벽처럼 보임. 
이유는 100가지도 넘게 말할수 있지만 간단히 하드웨어 부분만 요약하면
경쟁자인 AMD Deep Instinct는 AMD가 주장하는 벤치마크로 볼때 Pascal보다는 
나아보이지만 비슷한 시기에 발매될 Volta와는 경쟁이 힘든 수준으로 예상되고, 
INTEL Xeon Phi는 GPU를 따라잡기에는 아직 까마득해보임. Xeon Phi랑 Tesla 비교한 링크


2편은 시간나서 테크닉에 대해 정리가 완료되면 쓰겠습니다.


ps. 피드백이 오면 수정을 하기 위해 본삭금은 나중에 걸겠습니다.

댓글
  • 체지방파괴자 2017/06/30 00:42

    저는 문외한 이지만, 2편, 3편, ...관심을 갖고 읽어 볼께요. 좋은 글 고맙습니다.

    (KZf891)

  • 대나무피리 2017/06/30 01:21

    초보 프로그래머입니다. 2, 3 편 기대하겠습니다.

    (KZf891)

  • 정겨울 2017/06/30 11:46

    keras는 어떤가요?

    (KZf891)

  • byBAE 2017/06/30 17:06

    .

    (KZf891)

  • 돈까츠 2017/06/30 17:07

    헬스머신인줄...ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 게시판 미아 인줄.. ㅋㅋㅋㅋㅋㅋ

    (KZf891)

  • 열받으면짖음 2017/06/30 17:12

    .

    (KZf891)

  • 어떡행 2017/06/30 17:16

    평소 관심이 많았는데 너무 막연합니다.
    한국어 자료가 거의 전무 함으로 이길을 가고자
    하는 어린 아이들 에게 첫 발걸음을 떼게 해주는
    좋은 글입니다.

    (KZf891)

  • GentleG 2017/06/30 17:19

    딥러닝을 만들고 이해하는 분야에 대한 설명도 좋지만, 1장이니만큼 딥러닝이 무엇인가부터 시작했으면 좋겠습니다.
    동업 종사자는 아니지만, 빅데이터 쪽에서 일을했었기에 딥러닝과 항상 협업했는데, 거기선 딥러닝의 원리도 잘 모르면서 만들어대기만 해서 답답했거든요.
    딥러닝 쉘로우러닝 머신러닝부터 노드라던지.. 이런 용어부터 공부하시는게 도움이 많이 될 것 같네요.

    (KZf891)

  • 우리엄마최고 2017/06/30 17:33

    제가 정말 초짜라서 이런 질문 바보같지만
    딥러닝에 그래픽카드가 왜 필요한가요? CPU나 RAM이 아니라 왜 그래픽카드가 좋아야하는지 궁금해요

    (KZf891)

  • 오유하는조씨 2017/06/30 17:48

    수행속도나 코딩 편의성 때문에 GoLang을 생각해 보았지만
    파이썬으로 프로그래밍 한다 해도 tensorflow 연산 부분에서 C/C++ 로 코딩된 라이브러리를 가져다 쓰는 순간 속도는 비슷..
    결국 속도상에서 큰 차이는 없는데 개발 및 관리가 편하면서 속도 가 크게 느리지 않는 파이썬이 대세인듯 하더군요

    (KZf891)

  • 어제의유우머 2017/06/30 17:59

    일단 스크랩해놓고 나중에 봐야지...

    (KZf891)

  • 물속의현자 2017/06/30 18:16

    좋은글은 추천

    (KZf891)

  • 자유해결사 2017/06/30 18:22

    사람들이 항상 코딩더 매트릭스 책을 추천하는데. 그거 보고 이해가 잘 안가면. 어찌해야 할까요?
    ㅠㅜ

    (KZf891)

  • Limesis 2017/06/30 18:55

    Python 짱죠아여.

    (KZf891)

  • 삼류소설가 2017/06/30 19:03

    1번 , 4번만 해도 벅차겠다 ㄷㄷ

    (KZf891)

  • 쌩~크 2017/06/30 21:12

    추천은 많은데 댓글수는 별로 없네

    (KZf891)

  • 하루미 2017/06/30 21:19

    분명 러닝머신알려준다해서 들어왔는데...
    문과는 그냥 지나가겟습니다

    (KZf891)

  • Franken 2017/06/30 21:48

    동일분야는 아니지만 감사합니드아아아
    가이드라인 가이드라인!!! +_+!!!!!

    (KZf891)

  • 크큭파괘한다 2017/06/30 21:55

    어이없는 질문이지만 만약  IT쪽 모르는 사람이 독학으로 작성자님 레벨까지 공부할 수 있나요?
    가능하다면 얼마나 오래 걸릴까요?

    (KZf891)

(KZf891)