티스토리 뷰

해야지 해야지 미루기만 했던 머신러닝 공부를 얼마전부터 시작해서, 앞으로 공부한 내용을 정리할 겸

블로그에 올리려고 합니다! 책과 유튜브 머신러닝 강의를 공부한 내용을 토대로 올리는 거라 내용상 오류가 적을 것 같지만, 혹시라도 틀린 점, 잘못된 점이 있다면 알려주시면 감사하겠습니다 :)


많은 분들이 그렇겠지만, 저는 머신러닝, 딥러닝에 대해 알게되고 관심을 갖게 된 계기가 알파고와 이세돌9단의 대국이였습니다. 하지만, 이 머신러닝, 딥러닝기술이 최근 몇년사이 반짝 하고 나온게 아니라, 이전부터 많은 연구자들이 연구해오고 좌절도 겪고 하며 지금에서야 빛을 발하게 된 기술이더라구요 ㅎㅎ

연구는 약 1950년대 후반 부터 시작해서 지금까지 중간중간 여러번의 혹독한 좌절을 겪으면서, 발전해온 기술이랍니다. 지금에서야 이렇게 빛을 발하고 각광받는 이유는, 알고리즘이나 매커니즘의 발전도 있지만, 컴퓨팅 파워와 데이터의 양이 과거에비해 기하급수적으로 커졌기 때문입니다. 

그만큼 딥러닝에 있어서, 데이터의 양과 질이 매우 중요하다고 합니다!

머신러닝은 데이터를 이용해서 컴퓨터가 어떤 지식이나 패턴을 학습하는 것을 말합니다. 

딥러닝은 머신러닝의 여러 방법론중 하나로 인공신경망을 여러층 쌓아 올린 기법을 말합니다. 

이렇게 인공신경망을 깊게 쌓아 올림으로써, 데이터의 특징을 단계별로 학습할 수 있다는 장점이 있습니다. 

예를들어 이미지분류의 경우, 낮은층에서는 저차원 특징을 학습하고, 높은층에서는 고차원특징을 학습하는 식입니다. 

저차원 특징 - 이미지의 픽셀, 선, 밝기 등등..

고차원 특징 - 눈, 코, 입등 전체 이미지에 대한 의미 정보

 

머신러닝 알고리즘에 대한 학습은 크게 세가지가 있습니다.

1. 지도 학습 - 정답 데이터가 존재하는 상황에서 학습하는 알고리즘, 입력데이터 x와 그에 대한 정답 y (레이블이라고 합니다.) 데이터가 학습데이터로 주어집니다. 대표적으로 CNN, RNN이 지도학습입니다.

2. 비지도 학습 정답 데이터(레이블)이 없이 입력데이터 x만을 이용해서 학습하는 알고리즘으로, 주로 데이터의 숨겨진 특징을 찾아내는것에 목적이 있습니다.

3. 강화 학습 에이전트가 주어진 환경에서 어떤행동을 취하고 이에 대한 보상을 얻으며 학습을 진행합니다.

이때 에이전트는 보상을 최대화 하는 방식으로 학습을 진행합니다. 

 

Tensorflow

텐서플로우는 구글에서 개발한 딥러닝/머신러닝을 위한 오픈소스 라이브러리 입니다. 

텐서플로우 뿐만 아니라 페이스북이 주도적으로 개발한 파이토치나 마이크로소프트의 CNTK가 있지만, 

저는 텐서플로우를 사용해 공부할 것이기 때문에, 텐서플로우에 대해 알려드리려고 합니다!

설치방법)

쉘에서 

pip install tensorflow 혹은

conda install tensorflow (아나콘다)

를 통해 텐서플로우를 설치해 줍시다! 

텐서플로우는 이름에서 유추 가능 하듯이, 텐서를 흘려보내며 데이터를 처리하는 라이브러리 입니다. 

여기서 텐서는 다차원 배열을 의미하는데, 다음과 같습니다. (랭크는 텐서의 차원을 의미하는 용어 입니다.)

1  -> 랭크 0 텐서, shape[] 스칼라
[1,2,3]  -> 랭크 1 텐서, shape [3] 벡터
[[1,2,3],[4,5,6]]  -> 랭크 2 텐서, shape[2,3] 행렬
[[[7,8,9]],[[10,11,12]]]   -> 랭크 3 텐서, shape[2,1,3]  

말로만 들어서는 텐서를 흘려보낸다는 말이 무슨말인지 이해가 잘 안갈텐데요, 텐서플로는 노드와 노드간의 연결인 엣지를 통해 텐서를 주고받으면서 계산을 수행합니다. 즉, 그래프는 노드와 엣지로 구성되어 있는데, 각각의 노드에는 덧셈 곱셈등의 연산과 변수 상수등의 정의 되고, 각각의 엣지로 노드들이 연결되면서 연산이 수행되는 거죠 ㅎㅎ

그럼  텐서플로우가 뭔지, 어떤식으로 작동하는지 대충 감을 잡았으니, 모든 프로그래밍의 시작 hello world를 출력해 봅시다!

만약 지금 이 글을 읽고 계신 분이라면, 텐서플로 2.0 혹은 2.x버전을 설치 하셨을 텐데, 지금은 서적이나 강의에 텐서플로 2.0이 반영되지 않은 시점이라 1.0 버전 기준으로 코드를 작성하려 합니다. 그렇기 때문에, 라이브러리를 import 할때 import tensorflow as tf 가 아닌 

import tensorflow.compat.v1 as tf

tf.disable_v2_behavior()

를 해줘야 합니다. (만약 1.x버전 사용시 import tensorflow as tf)

import tensorflow.compat.v1 as tf 
tf.disable_v2_behavior()

hello = tf.constant('Hello, World!!')

sess = tf.Session()
print(sess.run(hello))

a = tf.constant(350)
b = tf.constant(74)
print(sess.run(a+b))

sess.close()

 

어떤가요? 제대로 출력이 되시나요? ㅎㅎ

이 코드는 텐서플로우가 제대로 설치되고 작동 되는지 확인해보기위한 간단한 코드니까, 코드의 의미는 다음 코드 부터 설명 드리도록 하겠습니다~!!

시작이 반이라는데, 함께 열심히 공부해 봅시다~!

댓글
링크
최근에 올라온 글
최근에 달린 댓글