본문 바로가기

Machine Learning/Learning TensorFlow

Learning Tensorflow | 제 1장 개요

Chapter 1 개요



이 포스팅은 개인 공부용 메모장이니 전문적인 지식 참고용으로는 사용하지 마세요.
피드백 주시면 감사하겠습니다 (_ _) 


-

2019.01.22 PM 3:42

 이 장은 첫 번째 장으로 기본적인 텐서플로에 대한 전반적인 소개와 주요 기능인 딥러닝 시스템의 구현과 배포에 대해 소개한다. 개인적으로 이 책들(물고기 책)의 첫번째 장들이 마음에 든다. 약간 내가 왜 이 책들을 읽고 있는지 다시 한번 상기시켜주고 배움에 대한 흥미를 돋군다고 해야하나?! (•̀ᴗ•́)و


1.1 딥러닝 속으로

 요즘 대기업들뿐만 아니라 스타드업 회사에서도 많은 엔지닝와 데이터 과학자들은 대량의 데이터를 수집하고 머신러닝 알고리즘을 사용하여 복잡한 문제의 답을 내놓는다. 그래서 내가 이 포스팅을 쓰고 있고 당신이 구글링을 하고 있겠지.. 이런 지능형 시스템을 구축하기 위해 여러 알고리즘들이 필요한데 딥러닝을 빼놓을 수는 없다. 보통 이런 알고리즘들이 어떻게 사용되냐를 보면 책 속의 예시들을 살펴보자. 만약에 자율주행 자동차에 대한 모바일 앱을 만든다고 했을 때 우리는 사진이나 자연어, 음성의 내용을 인식하는 기능들이 탑재되어야 한다. 이 때 이런 기능들을 넣기 위해서는 딥러닝 알고리즘을 넣어야하는 것은 필수적이다. 또한, 신약 물질 발견을 위한 복잡한 화학구조와 유전자 구조, 공공 의료 분야의 복잡한 진료 기록 등 다양한 분야와 다양한 데이터 유형으로 급속도록 확장되고 있다. 

  딥러닝 방법론은 심층심경망Deep neural network(DNN)으로 시작되었다. 이는 상호 연결된 뉴런으로 이루어진 인간 두뇌 네크워크를 흉내 내는 방식이다. 딥러닝이나 머신 러닝에 대해 공부를 살짝만 해봐도 다들 익숙한 네트워크 그래프일 것이다. 포도알같은 노드에 층을 나누어 연결되어 있는 그래프. 수백만 개의 데이터를 뉴런의 입력으로 밀어 넣고 이 입력으로부터 패턴을 찾아낼 수 있도록 뉴런을 학습시킨다. 이 것이 핵심이다 "학습". 우리는 데이터들을 학습시키는 것이 목표이다. 아무 관련 없어보이는 데이터들도 만능의 알고리즘을 지나면 각 공통된 특징들을 발견해내는 것, 그리고 그들을 학습시켜 다음 새로운 데이터가 들어오면 분류/새로운 학습을 할 수 있도록 만드는 것! 매력적이고 구미가 당기는 알고리즘인건 맞는데... 깊게 들어가면 어렵단 말이지.. (•̥́_•ૅू˳)

 이 책은 딥러닝을 위한 구글의 프레임워크인 텐서플로에 관한 내용을 담고 있다. 흔히들 예상했겠지만 딥러닝 알고리즘은 구글의 제품 및 서비스 영역에서  검색, 번역, 광고, 컴퓨터 비전, 음성인식 등에 수년간 쓰여왔다. 이 책에 의하면 텐서플로는 2011년에 시작된 디스트빌리프DistBelief 프로젝트를 계승한 것으로, 이는 심층신경망을 구현하고 배포하는 데 사용되던 구글의 2세대 시스템이다. 디스트빌리프는 구글이 처음으로 낸 머신러닝 시스템이고, 텐서플로는 2015년에 오픈소스로 공개된 구글의 두번째 머신러닝 시스템이다. 안드로이드와  iOS같은 모바일 환경은 물론 64비트 리눅스, MacOS 의 데스크탑이나 서버 시스템의 여러개의 CPU와 GPU에서 구동될 수 있다고 한다. 텐서플로 연산은 상태를 가지는 데이터 흐름 유향 그래프로 표현된다고하는데 일단은 상식으로 알아두면 될 것같다. 저번 포스트에 올려놓은 이 책의 github 속에 있는 예제들을 보면 알겠지만, 파이선 기반으로 하고 있고 다른 시스템보다 사소한 인자들이 많아 조금은 불편하다는 것이 지인들과 본인의 생각이다. 초보자들에게는 사용하기 살짝 어려울 수 있다. 



 일단 텐서플로가 최신 응용 프로그램에서 어떻게 사용되는지에 대한 흥미로운 사례 3가지를 소개하겠다. 

1. 사전 학습된 모델 : 모두를 위한 최신 컴퓨터 비전

 딥러닝이 많이 사용되는 분야에서는 컴퓨터 비전이 빠질 수 없다. 컴퓨터 비전에서는 쉽게 말해 이미지 input이 있으면 그 이미지를 분석하여 어떤 이미지인지 카테고리 분류하는 것이 주임무이다. 이런 알고리즘을 학습하고 만드는 것에 딥러닝이 쓰인다. 요즘 추세는 사용자들이 각자의 데이터를 적용할 수 있도록 사전 학습된 모델을 공개하는 것이 요새 추세이다. 쉽게 말해 '사전 준비된 알고리즘'을 적용시키면 바로 사용자가 가지고 있는 데이터만 넣으면 원하는 출력을 얻을 수 있다는 것! 텐서플로에서는 이런 알고리즘 모델들을 제공해준다. 

2. 이미지에 대한 자연어 형태의 설명 만들기

 이 또한 이미지에 대한 사례인데 이 기능은 "이미지 캡션 달기"이다. 우리가 가지고 있는 이미지가 어떤 사진인지 자연어로 설명하도록 하는 기능이다! 실제로 이런 사진이 데이터가 되진 않겠지만, 그냥 뭐 얘기하자면 이런거다.

집마당에서 짱구가 흰둥이를 안고 있다. 


3. 텍스트 요약 

 이미지를 활용한 컴퓨터 비전이외에도 딥러닝하면 또 빠질 수 없는게 자연어이해 natural language understanding(NLU)이다. 지금 내가 글을 쓰고 있듯이 많은 지금은 영상, 이미지 데이터보다도 수없이 많은게 텍스트 데이터이다. 가장 수요가 많은 기능은 텍스트 요약으로, 긴 문서를 간단히 축약하는 기능이다. 이 책의 후반부에서 다룬다고 하니 기대가 된다.. (ˊᗜˋ*)

 

1.2 텐서플로라는 이름에 담긴 의미

 이 부분은 간단하고 빠르게 넘어가겠다! 

 텐서는 딥러닝에서 데이터를 표현하는 일반적인 방법이다. 행렬로 표현할 수 있는 2차원 데이블을 높은 차원으로 확장한 다찬원 배열에 불과하다.  

 간단히 말해 회색조의 이미 같은 경우 단지 픽셀의 값을 테이블 형태로 표현하는데, RGB 이미지는 각각의 픽셀을 각 채널에 해당하는 세 개의 값으로 나타내 이를 텐서로 표현할 수 있다. 결국은 텐서(tensor)는 데이터를 이야기하는 것이고, 플로우(flow)는 흐름이라는 뜻이니, 텐서플로우(tensorflow)는 데이터의 흐름을 이야기 하는 것이다! 뭐... 별 얘기는 아니었다. 이 책에서는 한 문장으로 '데이터 흐름 그래프를 기반으로 하는 수치 계산을 위한 소프트웨어 프레임워크'라고 하였다. 가장 많이 쓰이는 front-end 언어는 파이썬이다. 파이썬은 머신러닝에서 빼놓을 수 없는 언어... 여러가지 장점에 대해서 써놨는데 이건 써보면서 알아가는 장점이라 생각하니 넘어가도록 하자.

 결과적으로는 텐서플로우가 1년만에 인기 급상승의 이유는 있다는 것, 그리고 써보면 그 이유를 알 수 있다는 것. 이 글을 읽는 모두가 그 이유를 온 몸으로 느끼는 날이 왔으면 좋겠다.. 나도 .......

-

2019.07.04 PM 9:02

 이게 무슨일인가 싶겠지만, 계속 미루다가 6개월이 지나서야 1장을 마치다니... 다시 한번 이번 방학에 열심히 써보도록 노력해보겠다. 제발 ಠ_ಠ