초보자도 이해할 수 있는 딥러닝(텐서플로우 설치까지)

딥러닝에 대한 개념과 텐서플로우 설치 방법에 대해서 정리해봤습니다.
2021.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook)입니다. 이번에는 딥러닝에 대한 개념과 텐서플로우 설치 방법에 대해서 정리해봤습니다.

인공지능

컴퓨터 사이언스에서, 인공지능(AI)이라는 용어는 컴퓨터, 로봇 또는 기타 기계에 의해 표현되는 마치 인간 같은 지능을 의미합니다. 대중적인 용어로, 인공지능은 예제와 훈련으로부터의 학습, 사물 인식, 언어 이해 및 반응, 의사결정, 문제점 해결 그리고 이와 기타 기능을 결합하여 인간이 수행할 수 있는 기능(예: 호텔 손님 접대 혹은 자동차 운전)을 수행하는 인간 사고의 기능을 모방하는 컴퓨터 혹은 머신의 기능을 의미합니다.

  • 인공지능 : 컴퓨터가 인간의 사고를 모방하는 모든 것
  • 머신러닝 : 주어진 데이터를 이용하여 컴퓨터가 스스로 학습 하는 것
  • 딥러닝(인공신경망) : 인간 뇌 동작 방식에 착안하여 개발한 머신러닝 학습 방법

크게 인공지능이 있고 그 안에 머신러닝 그리고 머신러닝의 학습방법으로 딥러닝이 존재합니다.

학습방법

규칙기반 인공지능의 경우 개발자가 스스로 데이터를 입력 해주어야 합니다.

그림에 나온것 처럼 바나나를 인식하기 위해서 바나나의 특징을 인풋값으로 넣어주게 되는데, 바나나는 길다, 노랗다, 약간 휘었다 라는 특징을 넣어줌으로써 바바나로 인식하게 하는것이 규칙기반 인공지능이라 할 수 있겠습니다.

반대로 머신러닝의 인풋값과 아웃풋 값을 가지고 계산을 하게 되는데, 바나나의 사진을 넣어주고 결과값으로 바나나라고 한다. 그러면 이 사진이 바나나라고 인식을 할 수 있을 때 까지 컴퓨터가 스스로 학습을 하게 됨으로써 바나나의 사진을 보고, 길다, 노랗다, 약간 휘었다 라고 스스로 학습을 하게 되는데. 이것이 머신러닝입니다.

추가적으로 썰어놓은 바나나의 경우 규칙기반 인공지능은 개발자가 다시 또 입력을 해줘야 합니다.

하얀색, 납작하다, 둥글다 라고 다시 입력을 해주어야 하지만 머신러닝의 경우 인풋값과 결과값만 집어넣게 되면 스스로 학습하게 됩니다. 그러므로 썰어놓은 바나나 이미지를 주고 결과값으로 바나나를 주면, 사진상의 바나나를 보며 썰어놓은것 또한 바나나 이며 하얀색, 납작하다, 둥글다 라고 스스로 학습합니다.

인간도 파악하기 어려운 복잡한 문제는 머신러닝도 해결 어려웠기 때문에, 이러한 머신러닝의 한계를 인공신경망(딥러닝)으로 해결 할 수 있겠다 라고 생각하여 인공신경막(딥러닝)을 연구하기 시작했습니다.

현재 딥러닝(인공신경망)이 부상한 이유는 예전에는 방대한 데이터를 처리하는 일이 없었으므로, 쓰일 일이 거의 없었습니다.

하지만 시간이 지나면 지날수록 사용 되는 데이터양이 많아짐에 따라 빅데이터와 GPU가 발전하게 되고, 다양한 딥러닝 알고리즘들이 개발 되었습니다.

약인공지능(ANI)과 강인공지능(AGI)

약인공지능(ANI)의 경우 현재 존재하는 모든 인공지능이라고 생각하면 됩니다. 규칙을 벗어난 창조적인 분야에서는 사용할수 없으며, 넓은 분야에서 사용할수 없고, 특정 분야에서만 사용이 되고 있습니다.

강인공지능(AGI)의 경우 현재 존재하지 않습니다. 강인공지능 스스로가 생각하고 창조하며 학습을 하는것을 말하는데, 일반적으로 영화 아이언맨에 나오는 인공지능을 생각하면 될 것 같습니다.

전통 프로그래밍과 머신러닝의 차이점

전통 프로그래밍과 머신러닝의 차이점은 전통 프로그래밍의 경우 데이터를 주고 어떤 식으로 처리해 라는 알고리즘을 전달합니다. 그럼 이것을 바탕으로 컴퓨터가 계산을 해서 결과값을 냅니다.

즉 컴퓨터가 주어진 데이터와 알고리즘을 바탕으로 최종적 아웃풋을 내주는 것이 전통 프로그래밍 기법이라고 할 수 있습니다.

머신러닝의 경우 데이터값(input)과 아웃풋(output)을 준다. 이 인풋값과 아웃풋 값 만으로 컴퓨터가 계산을 해서 스스로 학습하여 하나의 알고리즘을 만들어냅니다.

머신러닝에는 지도학습, 비지도학습, 강화학습이 존재합니다.

지도학습의 경우 정답을 알려주며 학습을 시키고, 비지도학습의 경우 정답을 알려주지 않고, 비슷한 데이터들을 군집화 합니다. 즉 비슷한 데이터들을 입력해주면 컴퓨터 본인 스스로 특징을 잡아서 학습을 합니다.

강화학습은 상과 벌이라는 보상을 주어 학습을 시키는데 대표적인 예로 알파고가 있습니다.

​텐서플로우 설치

이제 텐서플로우를 설치해보도록 하겠습니다.

일단 아나콘다가 설치 되어 있다는 가정하에 진행합니다.

먼저 아나콘다 프롬프트에서 다음 명령을 입력한다.

  • conda update -n base conda

그리고 conda update --all 명령을 통해 설치된 파이썬 패키지를 모두 최신버전으로 업데이트 합니다. 이후 pip install numpy matplotlib pillow 를 통해서 라이브러리들을 설치해줍니다. numpy는 수치 계산, matplotlib 는 그래프, pillow는 이미지 처리 라이브러리입니다.

현재 파이썬 버전이 3 버전이면 pip3를 입력해주면 됩니다. 버전이 2이면 그냥 pip 입니다.

그리고 다음 순으로 설치를 진행 해주면 됩니다.

  • conda update -n base conda
  • pip install --upgrade pip
  • pip install tensorflow
  • conda install tensorflow

명령어를 입력 ​하고서 실행해보면

다음과 같은 에러가 뜰 수 있는데, 이때는

  • pip install gast==0.2.2
  • pip uninstall numpy 를 통해서 기존 넘파이를 삭제 해주고
  • pip install "numpy<1.17" 로 다시 설치해줍니다.

그외에도

name tf.Session is deprecated. Please use tf.compat.v1.Session instead.

이러한 에러가 뜰 때도 있는데, 이 때는 적힌 그대로 t1.compat.v1.Session 으로 코드를 수정해주고 다시 실행 해주면 문제없이 작동합니다.

마지막으로

딥러닝에 관심이 많아진 요즘, 이것저것 자료를 찾아가면서 공부해보고 있습니다. 딥러닝이 무엇인지 잘 모르겠다 하시는 분들에게 제 블로그가 도움이 됐으면 좋겠습니다!

참고