TensorFlow

TensorFlow 학습.

Imagem de capa

T아카데미 진행하는 TensorFlow 세미나 영상을 보면서 따로 찾아보며 공부를 하게되었네요. 상세하게 공부하기보다 초급정도로만 공부하였지만 배워야할게 정말 많다고 느꼈네요… 간단하게 몇 가지만 정리하고 맨 아래에 제가 참고했던 사이트 링크 공유할게요.

맵알(MapR)의 최고 애플리케이션 설계자인 테드 더닝은 이것이 쉬운 일은 아니지만, “완성된 상품을 그냥 돈을 주고 사면 된다고 생각한다면” 애초에 머신러닝 기술을 구입할 자격이 없는 것이라고 지적했습니다. 더닝은 “머신러닝과 이를 프로덕션에 적용하는 방법을 이미 알고 있는 상태가 아니면 회사의 라이프사이클에 추가되는 복잡성을 제대로 이해하지 못할 가능성이 높다. 반면 이미 경험을 했다면 잘 구성된 머신러닝은 예상 이상의 큰 차별화 요소가 될 수 있다”고 말했습니다.


텐서플로우는 데이터 플로우 그래프(Data flow graph)를 사용하여 수치 연산을 하는 오픈소스 소프트웨어 라이브러리입니다. 그래프의 노드(Node)는 수치 연산을 나타내고 엣지(edge)는 노드 사이를 이동하는 다차원 데이터 배열(텐서,tensor)를 나타냅니다. 유연한 아키텍처로 구성되어 있어 코드 수정없이 데스크탑, 서버 혹은 모바일 디바이스에서 CPU나 GPU를 사용하여 연산을 구동시킬 수 있습니다. 텐서플로우는 원래 머신러닝과 딥 뉴럴 네트워크 연구를 목적으로 구글의 인공지능 연구 조직인 구글 브레인 팀의 연구자와 엔지니어들에 의해 개발되었습니다. 하지만 이 시스템은 여러 다른 분야에도 충분히 적용될 수 있습니다.

  1. 오퍼레이션(Operation) 그래프 상의 노드는 오퍼레이션(줄임말 op)으로 불립니다. 오퍼레이션은 하나 이상의 텐서를 받을 수 있습니다. 오퍼레이션은 계산을 수행하고, 결과를 하나 이상의 텐서로 반환할 수 있습니다.

  2. 텐서(Tensor) 내부적으로 모든 데이터는 텐서를 통해 표현됩니다. 텐서는 일종의 다차원 배열인데, 그래프 내의 오퍼레이션 간에는 텐서만이 전달됩니다. (Caffe의 Blob과 유사합니다.)

  3. 세션(Session) 그래프를 실행하기 위해서는 세션 객체가 필요합니다. 세션은 오퍼레이션의 실행 환경을 캡슐화한 것입니다.

  4. 변수(Variables) 변수는 그래프의 실행시, 패러미터를 저장하고 갱신하는데 사용됩니다. 메모리 상에서 텐서를 저장하는 버퍼 역할을 합니다.

연산은 graph로 표현합니다.(역자 주: graph는 점과 선, 업계 용어로는 노드와 엣지로 이뤄진 수학적인 구조를 의미합니다.) graph는 Session내에서 실행됩니다. 데이터는 tensor로 표현합니다. 변수(Variable)는 (역자 주: 여러 graph들이 작동할 때도) 그 상태를 유지합니다. 작업(operation 혹은 op)에서 데이터를 입출력 할 때 feed와 fetch를 사용할 수 있습니다.

MNIST는 손으로 쓴 숫자의 이미지 데이터베이스입니다. 이 데이터를 학습하여 분류기를 만드는 것은 ‘Hello World’를 찍는 것이라고 보면 되겠습니다. MNIST 데이터셋은 두 부분으로 나뉩니다. 손으로 쓴 숫자와 그에 따른 라벨입니다.

만약 당신이 어떤 것이 서로 다른 여러 항목 중 하나일 확률을 계산하고자 한다면, 소프트맥스가 딱 맞습니다. 소프트맥스는 각 값이 0과 1 사이의 값으로 이루어지고, 각 값을 모두 합하면 1이 되는 목록을 제공하기 때문입니다. 소프트맥스 회귀는 두 단계로 이루어집니다. 우선 입력한 데이터가 각 클래스에 속한다는 증거(evidence)를 수치적으로 계산하고, 그 뒤엔 계산한 값을 확률로 변환하는 것입니다.


TensorFlow 한글 문서