본문 바로가기
College Study/Deep Learning

[Visualization Lab] 인공지능/머신러닝/딥러닝 이론, 기초 공부법

by 2den 2020. 10. 15.
728x90

인공지능이 무엇인지조차 모르던 제가 딥러닝-그래픽스 연구에 참여하기 전 이론을 공부한 방법입니다. 저 같은 경우에는 이것 다음에 무엇을 공부해야할지 모르겠을 때 물어볼 수 있는 선배가 있었지만, 그렇지 않을 때에는 막막함이 느껴질 것 같아 준비해 보았습니다, 저의 기초 이론 공부 과정!!

 


 

공부 시작 전 알아둘 기초 상식

정확한 개념 정의는 아니지만 이해하기 쉽게 간단히 정리해보자면,

 

  • 인공지능 : 기계들이 인간의 사고를 모방하는 것
  • 머신러닝 : 컴퓨터가 스스로 학습하는 것 (규칙을 찾거나 예측)
  • 딥러닝 : 인공신경망을 이용하여 학습하는 것, 학습데이터도 스스로 학습하여 데이터 제공이 필요 없음

정도로 얘기할 수 있겠네요. 더 직관적인 설명이 있다면, 댓글에 남겨주세요.

 

 

 

시각적인 수학 개념 학습은 Youtube - 3Blue1Brown

다른 카테고리 글에서 3Blue1Brown 유튜브 채널을 소개한 적이 있는 것 같습니다. 이 채널에는 Neural Network (위에 '딥러닝' 설명에서 말한 인공신경망을 말합니다.) 재생목록이 있어 4개의 비디오로 나누어 직관적인 설명을 제공합니다. 동영상 길이는 각각 10분~20분 정도입니다.

 

 

Neural networks

 

www.youtube.com

인공신경망의 기본적인 구조를 알 수 있어, 다음 학습에서의 개념 이해가 쉬워지는 효과를 봤습니다.

 

 

심화된 수학 개념을 활용한 머신러닝 학습

Standford (스탠포드) 대학은 무료 강의를 제공합니다. Andrew Ng 교수님의 머신러닝 강좌는 이미 너무나도 유명한 강좌인만큼, 조금 더 심화된 인공지능을 위해 거쳐가는 필수코스 중 하나인 것 같습니다. 강좌가 꽤 깊고 디테일하다보니, 저도 아직까지 시간이 날 때마다 나눠서 듣고 있습니다. 아래의 링크를 통해 coursera에 가입하시면, 무료로 강좌를 들을 수 있습니다.

 

 

기계 학습

Learn Machine Learning from Stanford University. Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, ...

www.coursera.org

 

 

딥러닝 인공신경망 알고리즘 학습

인공신경망에는 여러가지 종류가 있습니다. 굉장히 어렵고 복잡한 개념들이지만, 간단하고 빠르게 훑어 본다면 추후 심화 학습에 도움이 될 것으로 보입니다. 제가 참고한 사이트 링크들을 공유하겠습니다.

 

CNN (Convolutional Neural Network): taewan.kim/post/cnn/

Autoencoder : excelsior-cjh.tistory.com/187

GAN : dreamgonfly.github.io/blog/gan-explained/

RNN : wikidocs.net/22886

Deep CNN : www.sciencedirect.com/topics/computer-science/deep-convolutional-neural-networks#:~:text=Architecture%20overview%20of%20CNNs,value%20of%20the%20cost%20function. (영어 페이지)

 

이러한 사이트들을 돌아다니다 보면, 더 배워야할 개념(본인이 모르는 모든 개념)이 나오고, 구글에 그 개념을 search하면 해당 개념을 자세히 설명한 블로그, 학술지, 페이지 등을 많이 발견할 수 있습니다. 그렇게 웬만한 개념들을 다 들어본 것 같다면 실습 또는 심화된 이론을 공부할 순서라고 생각됩니다.

 

 

 

실습 전 Tensorflow (텐서플로우) 기초 이론 학습

 

Jaeyun's AI LAB^~^ : 네이버 블로그

싱나능 인공지능٩(•◡•)۶ -github.com/jaeyun95 -컴퓨터비전 -자연어처리 -지식처리 알고리즘은 당분간 쉽니당( Ĭ ^ Ĭ )

blog.naver.com

텐서플로우의 기초 개념(텐서, 그래프, 변수, 모델, 함수)들과 기본 문법, 관련된 개념(인공 신경망, 손실 함수, 심층 신경망)을 가볍게 공부할 수 있도록 정리하신 블로그입니다. 실습 코드가 있기 때문에 한 줄씩 읽어가며 감을 잡을 수 있습니다. 모델의 재사용, 텐서보드 부분은 건너 뛰었고, 그 뒤 개념은 제 나름대로 정리 후 코드는 보지 않았습니다.

  • MNIST : 손으로 쓴 숫자들의 이미지를 모아놓은 데이터(가장 유명한 것)를 비롯한 여러 제공되는 데이터 셋
  • dropout : 과적합(overfitting) 문제를 해결하기 위해 학습 시 전체 신경망 중 일부만을 사용하여 일부 특징이 특정 뉴런들에게 고정되는 것을 막아 가중치의 균형을 잡아줌, 충분히 학습되기까지 오랜 시간이 걸릴 수 있음
  • overfitting : 학습 데이터는 예측을 매우 잘 하지만 실제 데이터는 잘 예측하지 못하는 상태

손실함수(loss function)에 대한 부분은 이해가 부족하여 다른 페이지를 참고하기도 하였습니다.

 

 

 

실습 시작은 Tensorflow 튜토리얼

tensorflow 튜토리얼에 나온 쉬운 예제들을 따라해 보면서, (말이 쉬운 것이지 정말 어려웠습니다.) 천천히 tensorflow가 어떤 식으로 동작하여 모델을 만들고 학습시키는지 익혀보았습니다. 또 제 수준에서 연구하게 될 대부분의 것들은 이 튜토리얼에서 가르쳐주는 알고리즘을 각각 대입시키거나, 응용하여 살짝만 변형하거나, 두 개의 컨셉을 합친 정도에 그치기 때문에, 튜토리얼을 정말 유용하게 활용 중입니다. 한국어 번역이 매끄럽게 잘 되어 있으니 영어가 어려우신 분들도 잘 따라갈 수 있을 것입니다.

 

 

첫 번째 신경망 훈련하기: 기초적인 분류 문제  |  TensorFlow Core

Note: 이 문서는 텐서플로 커뮤니티에서 번역했습니다. 커뮤니티 번역 활동의 특성상 정확한 번역과 최신 내용을 반영하기 위해 노력함에도 불구하고 공식 영문 문서의 내용과 일치하지 않을 수

www.tensorflow.org

 


그래픽스를 독학할 때에 비하면 인공지능은 보다 인기 있는 학문 분야이기도 하고, 현재 연구가 전세계적으로 활발히 이루어지다 보니 자료가 정말 많은 편입니다. 따라서 자신이 학습해야할 방향과 부족한 개념을 정확히 알고 괜찮은 구글링 실력을 지닌다면 공부할 것이 넘쳐날 것이라고 말씀드리고 싶습니다. '정답'은 없습니다. 여러분의 스타일과 목적에 맞게 길을 잘 찾아가시길 바랍니다.

 

단, 개념을 이해하는 데 소요되는 시간은 개인적으로 훨씬 큰 것 같습니다. 어려워요... 하지만 하나씩 알아가는 재미가 쏠쏠합니다. 또한 anaconda jupyter notebook을 사용하면 대화형 코딩이 가능하여 디버깅이 훨씬 쉽습니다. (다음 포스트에 소개하겠습니다.) stack overflow를 비롯한 여러 코딩 커뮤니티에서 같은 문제를 맞닥뜨린 사람들을 만나면 어려운 것을 공부하는 재미가 더해질 것 같습니다.

 

저희 연구실 박사 선배는 "학부생이 마스터하기에는 어려운 분야지"라고 말씀하셨지만, 저는 오기가 생겨 더 열심히 삽질을 해보려고 합니다. 여러분들도 저의 삽질과 발전 여부가 궁금하시다면 이 카테고리의 다음 게시물들을 기다려주세요.

 

저의 시행착오와 링크 줍줍이 도움이 되었기를 바라며, 마무리하도록 하겠습니다. 감사합니다.

728x90

댓글