머신러닝, 인공지능, 딥러닝의 차이점


인공지능, 머신러닝, 딥러닝 사진

인공지능이란 게 가장 큰 범주에 해당된다. 그 인공지능이라는 기술을 구현하기 위한 방법으로 머신러닝이 있다. 그리고 또 머신러닝을 구현할 수 있는 여러 가지 알고리즘 중에 하나가 바로 딥러닝인 것이다.


인공지능, 머신러닝, 딥러닝 개념


인공지능, 머신러닝, 딥러닝 설명

- 인공지능

인공지능은 기계 혹은 컴퓨터가 인간의 지능을 모방해서 인간과 비슷하게 동작하도록 만들어진 모든 기술을 의미한다.
즉, 인간을 본떠서 만든 기술을 인공지능이라고 한다는 것이다.

- 머신러닝

머신러닝이란 인공지능을 만들기 위해서 어떻게 할지 방법이 많을 텐데, 그 중에 하나로 컴퓨터가 데이터를 학습하도록 하는 기술을 의미한다.
기계가 데이터를 학습하게 하는 것이 머신러닝으로, 머신러닝 안에는 로지스틱 리그레션, 결정트리, 서포트 벡터 머신등과 같은 다양한 알고리즘이 존재한다.

- 딥러닝

머신러닝의 여러 알고리즘 중 인공신경망을 사용하는 방법이 딥러닝이다. 다층 인공신경망 구조를 사용하여 굉장히 많은 데이터를 학습하고 있고, 최근에는 딥러닝을 활용해서 이미지인식 감정분석 그리고 자연어처리까지도 모두 엄청나게 뛰어난 성능을 보이고 있다.


머신러닝


머신러닝 사진

머신러닝이란 기계와 컴퓨터에게 데이터를 제공해 주고 그 데이터를 학습하게 하는 방향을 말한다. 그렇기 때문에 머신러닝에서는 데이터가 필수적이다.
즉, 머신러닝을 도입하기 위해서는 그 머신에 학습시킬 데이터는 피루로 가지고 있어야 한다.


머신러닝의 원리


컴퓨터 사이언스

머신러닝 이전에 일반적인 컴퓨터 사이언스는 A와 B라는 인풋을 주면서 동시에 플러스를 하라는 프로그래밍 명령을 함께 제공한다.
하지만 머신러닝은 A와 B를 라는 인풋을 주는 것은 동일하지만, 이전에 같이 플러스라는 명령어를 제공하지 않고, 대신 C라는 최종 결과물을 주게 된다. 이를 통해 내부에서 어떤 일이 일어나는지 그 프로그래밍을 찾게 하는 것이 바로 머신러닝의 원리이다.

이미지 분석


고양이 분석 사진

고양이는 얼굴이 동그랗고, 눈도 두 개 동그랗게 있고, 귀가 뾰족하며 입은 세모라는 패턴을 찾아서 마스크를 만들어 고양이인지 아닌지 판별을 하게 된다.

고양이 예외

다음과 같이 귀가 뾰족하지 않거나, 얼굴에 뭔가를 씌운 상태일 경우 마스크가 일치한다고 말하기 어렵다. 하지만 머신러닝의 핵심은 수 많은 데이터이고, 많은 데이터를 학습시키면 고양이라고 판단할 수 있다.

고양이 퍼센트

다음 사진을 보면 초록색 박스로 고양이와 얼마나 가까운지 판단하는 것을 볼 수 있다. 이는 ssd 오브젝트디렉션이라는 모델을 사용했다.
이를 통해 알 수 있는 것은 머신러닝의 핵심은 다양한 데이터로 컴퓨터에게 학습을 시켜서 모델을 만든다는 것이다.

머신러닝 차트

머신러닝 차트

다음과 같이 머신러닝은 다양한한 종류를 버블 차트로 표시할 수 있는데, 이 중 가장 눈여겨 봐야 할 것은 Supervised Learning, Unsupervised Learning, Reinforcement Learning이다.

머신러닝 차트2

- Supervised Learning

SupervisedLearning

Supervised Learning은 우리말로 지도학습, 감독학습이라고 한다. 가장 널리 연구되고 있는 분야이며 성능이 가장 높게 잘 나온다. 문제와 정답을 함께 제공하는게 다른 종류의 머신러닝과 가장 큰 차이점이라고 할 수 있다.
우리는 그 문제를 Feature, 정답을 Label이라 한다.
고양이 사진과 강아지 사진을 주면서 학습을 시킬 때 전부 하나하나 마킹해 두는 것을 의미한다. 즉, 문제와 정답을 함께 제공하는 것을 의미한다.
어떤 값을 예측하는 Regression, 혹은 미래에 어떻게 될지 추정하는 Forecatst, 그리고 여러 가지 중에서 어떤 것이 확률이 높은지 분류하는 Classification 문제에 널리 활용되고 있다.
예를 들어 고양이와 강아지 사진을 분류하는 것은 Classification, 하루 시간에 따른 커피 소비량 예측은 Regression에 널리 사용되고 있다.

- Unsupervised Learning

UnsupervisedLearning

Unsupervised Learning은 우리말로 비지도 학습이라 한다. 지도학습과 다르게 문제만 제공한다(레이블을 제공하지 않는다). 그렇기 때문에 지도학습에서 풀었던 분류 혹은 예측 이런 것들이 아닌, 어떤 패턴이나 구조를 발견하고 그리고 아이템들을 그룹화 하는데 많이 사용된다.

값 변화 그래프

시간에 따라서 값이 변화가 될 때 평소와 다른 값이 나타난 경우 평소가 어떤 값을 가지고, 그 외의 값이 어떤 값을 가졌는지 레이블링을 다 하지 않아도 그냥 평소와 다른 것들을 패턴으로 찾아낼 수 있기 때문에 비지도 학습으로 학습이 가능하다.

사과 망고

사과, 바나나, 망고가 있을 때 클러스터링 알고리즘을 적용시키면 알아서 학습을 시킨 다음, 빨갛고 동그랗게 생긴 것들만 모으고, 그 다음 길고 노란색만 모을 것이다. 이렇게 되면 어떤 것이 사과이며 바나나고, 망고인지 모르지만, 어쨋든 비슷한 것끼리 모으는게 가능하다. 이것이 바로 클러스터링이다.

- Reinforcement Learning

ReinforcementLearning

Reinforcement Learning이란 우리말로 강화학습이라 한다. 이는 정답을 주는 것이 아닌 보상을 제공하게 된다. 어떤 액션을 취했을 때 그 액션이 잘한 액션이면 플러스 점수를, 그렇게 하면 안 되는 거였으면 마이너스 점수를 주게 되며 최종 목표는 높은 점수를 따게 하는 방식으로 환경을 설정해 두면 게임이나 로봇을 학습 시키는 데 사용할 수 있다.

훈련이 덜 된 모델은 정확도가 높지 않지만, 많은 학습을 하게 되면 더 빠르고 정확하게 된다.

SFV

게임 뿐만 아니라 사람의 움직임을 따라할 때도 사용한다. 사람의 움직임과 비슷하면 비슷할수록 높은 점수를 받을 수 있기 때문이다.
알파고도 이 강화학습을 이용하여 만들어졌다.

다양한 머신러닝의 알고리즘 방법

Algorithm

다음 사진과 같이 리니어 리그레션, 리그레션 트리 등의 알고리즘이 굉장히 많이 존재한다.
어떤 것을 사용해야 한다는 법칙은 없지만, 어떤 것들을 어떤 문제를 풀 때 사용하면 좋다 라는 것들은 학습이 필요하다.

Neural

Neural Network가 딥러닝을 의미하는 것이다. 사람은 뇌로 학습을 하기에, 컴퓨터에도 뇌와 비슷한 구조를 만드는 것을 바로 인공 신경망이라 한다. 사람의 뉴런을 본 따서 만들어 놓은 것이 바로 인공신경이다.

Neural

즉, 인공 신경 노드가 있으면 주위로부터 입력을 받아서 신경망에서 처리한 다음 출력을 하게 되는 방식이고, 이 노드가 여러 층이 쌓이는 것이 바로 딥러닝이다.
그렇기에 딥러닝이란 이전에 없었던 새로운 방식이 아닌 기존에 있었던 인공신경망이라는 것을 여러층 쌓아서 만든 알고리즘이라고 생각하면 된다.

구글 코랩(Google Colab)


구글 코랩(Google Colab) 구글에서 제공하는 코랩-Colab(Colaboratory의 줄임)은 Azure Notebook과 유사한 서비스로, 누구나 웹 브라우저에서 python 코드를 작성하고 실행할 수 있는 머신러닝, 데이터 분석, 교육을 위한 제품이다. 복잡한 가상환경이나 아나콘다 설치를 하지 않아도 jupyter notebook 환경을 사용할 수 있다. tensorflow, keras, pytorch, sklearn, pandas, numpy 등 머신러닝에 관련된 다양한 라이브러리가 이미 설치되어 있어 편하게 사용할 수 있다.


구글 계정만 있다면 누구나 무료로 코랩을 이용할 수 있으며, 작성한 모든 colab notebook은 구글 드라이브에 저장된다. 이미 작성된 .ipynb 파일을 업로드할 수도 있으며, 구글 드라이브 뭇너처럼 댓글을 달거나 다른사람과 공동작업을 하거나 공유할 수도 있다. 그리고 또 다른 장점은 무료로 뛰어난 성능의 GPUTPU까지 활용할 수 있다는 점이다.



코랩 사이트 바로가기 주소 : https://colab.research.google.com/notebooks/

코랩 공식 소개글(한글) : https://colab.research.google.com/notebooks/welcome.ipynb?hl=ko

구글 코랩 설치 안내 영상(한글) : https://www.youtube.com/watch?v=vRu77RmGD-M

현재 사용하는 구글 계정의 드라이브에 용량이 부족하다면 코랩 사용이 어려울 수 있으니 드라이브 정리 작업이 필요하다.

블로그 게시글 하단에 공유 링크(버튼)만들기

facebook

<a href="https://www.facebook.com/sharer/sarer.php?u=https://wnsgur9137.github.io/social_share/" title="Share on FaceBook><span class="count"><i class="fa fa-facebook-square"></i> Like</span></a></li>>

twitter

<li class="twitter"><a href="https://twitter.com/intent/tweet?text=https://wnsgur9137.github.io/social_share/" title="Share on Twitter"><span class="count"><i class="fa fa-twitter-square"></i> Tweet</span></a></li>

이 블로그에 공유 기능 넣을 땐 아래 코드를 입력

<div class="social-share">
  <ul class="socialcount socialcount-small inline-list">
    <li class="facebook"><a href="https://www.facebook.com/sharer/sharer.php?u=https://wnsgur9137.github.io/social_share/" title="Share on Facebook"><span class="count"><i class="fa fa-facebook-square"></i> Like</span></a></li>
    <li class="twitter"><a href="https://twitter.com/intent/tweet?text=https://wnsgur9137.github.io/social_share/" title="Share on Twitter"><span class="count"><i class="fa fa-twitter-square"></i> Tweet</span></a></li>
  </ul>
</div>

블로그 댓글 기능 만들기
disqus를 이용한 댓글을 만들기 위해 disqus을 이용한다.

disqus를 사용하기 위한 코드


    <script type="text/javascript">
        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
        var disqus_shortname = 'wnsgur9137-github-io'; // required: replace example with your forum shortname

        /* * * DON'T EDIT BELOW THIS LINE * * */
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();

        /* * * DON'T EDIT BELOW THIS LINE * * */
        (function () {
            var s = document.createElement('script'); s.async = true;
            s.type = 'text/javascript';
            s.src = '//' + disqus_shortname + '.disqus.com/count.js';
            (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
        }());
    </script>
    <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
    <a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>

다음은 적용된 모습이다.
disqus 적용 모습