# 인공지능 기초 개념

 

안녕하세요 코드사기꾼입니다.
오늘은 Tensor에 대한 개념 정립을 하는 시간을 갖도록 하겠습니다. 인공지능 연구분야에서 가장 유명한 라이브러리인 TensorFlow를 정말 많은 사람들이 사용하고 있으면서도, 정작 그 의미에 대한 부분은 모르시는 분이 많은것 같아 포스팅을 해보기로 했습니다.

 

 


 

1. Tensor

 

텐서란 매우 수학적인 개념으로 데이터의 배열이라고 볼 수 있습니다. 텐서의 Rank는 간단히 말해서 몇 차원 배열인가를 의미합니다.

 

RANK TYPE EXAMPLE
0 scalar [1]
1 vector [1,1]
2 matrix [[1,1],[1,1]]
3 3-tensor [[[1,1],[1,1]],[[1,1],[1,1]],[[1,2],[2,1]]]
n n-tensor  

 

스칼라는 일반적으로 존재하는 그냥 값(1개)입니다. 벡터는 스칼라가 여러개 모인것이며 차원이 높아질 수록 아래 차원의 것을 모아 놓은 배열인 것이라고 할 수 있습니다.

 

 

 

 


 

2. 예시

 

자연어 처리를 통하여 위의 내용에 대한 예제를 구성해 보도록 하겠습니다.
Hi King
Hi Queen
Hi Jack
이라는 Sentences가 존재할 때 one hot encoding으로 벡터를 나타내면 아래와 같습니다.

 

WORD INDEX EXAMPLE
hi 0 [1,0,0,0]
king 1 [0,1,0,0]
queen 2 [0,0,1,0]
jack 3 [0,0,0,1]

 

word를 vector로 나타내었으니 단어의 vector를 기반으로 문장을 matrix로 표현할 수 있을 것 같습니다.

 

word EXAMPLE
hi king [[1,0,0,0],[0,1,0,0]]
hi queen [[1,0,0,0],[0,0,1,0]]
hi jack [[1,0,0,0],[0,0,0,1]]

문장을 위처럼 matrix로 표현하였습니다. 하지만 저희는 신경망의 input으로 보통 말뭉치를 넣게 되는데요 말뭉치는 아래와 같이 표현할 수 있습니다.

 


    hi        king         hi        queen       hi          jack 
[[[1,0,0,0], [0,1,0,0]],[[1,0,0,0], [0,0,1,0]],[[1,0,0,0], [0,0,1,0]]]

 


위의 말뭉치에서 각 word는 4차원으로 구성되어있습니다. 그리고 각 문자은 2개의 단어로 구성되어있습니다. 총 3개의 문장을 가지고 있으므로 위 모델은 (3,2,4)의 3차원 Tensor라고 볼 수 있는 것 입니다.

 

 


 

 

1. scalar

 

scalar에 해당하는 일반적인 숫자 한개를 넣어서 차원을 출력해 보았습니다.

대로 0 차원이 나왔습니다. 한개의 값만 존재하는 scalar는 0차원입니다.
그렇다면 vector는 어떨까요?

 

 


 

 

2. vector

 

vector값의 차원을 확인하기 위하여 [1,2,3,4,5]를 인풋으로 넣어봤습니다.

값이 1이 나왔습니다. 역시 vector는 1차원 데이터입니다.

 

 


 

 

3. matrix

 

matrix는 vector의 집합입니다. [[1,2,3],[4,5,6],[7,8,9]]를 인풋으로 넣었습니다.

예상에서 벗어나질 않네요 2차원이 나왔습니다. vector여러개가 모이면 2차원 데이터가 됩니다.

 

 


 

 

4. tensor

 

그렇다면 마지막으로 tensor입니다. matrix의 집합인 tensor는 당연히 3차원 부터 시작하니 최소 3이상의 수가 나올 것입니다. 저는 3d 텐서를 입력값으로 넣었으니 3이라는 수가 출력될 것입니다.

3이 잘 출력 된것을 볼 수 있습니다.

 

 


자 오늘은 tensor란 무엇인가로 시작하여 0차원 데이터 부터 고차원 데이터까지 명명법과 형태에 관하여 배워보았습니다. 오늘 배운것들을 정리하자면,


1. Tensor는 배열의 집합이다.
2. 차원의 수는 Rank와 같은말이다.
3. 배열의 차원에따라 불리는 이름이 달라진다.

 

# 인공지능 기초 개념

 

안녕하세요 코드사기꾼입니다.
오늘은 지도/비지도 학습 그리고 강화학습의 특징 및 차이점에 대해서 설명해 드리도록 하겠습니다.

자 그럼 아래 그림에서 사각형이 아닌것을 고르는 문제를 한번 생각해 보겠습니다.
1) 주황색 원 2) 남색 정사각형 3) 회색 마름모 4) 하늘색 평행사변형

 

 

첩자가 한명 있다.

 

무엇을 고르셨나요? 정답은 바로 1번 주황색원입니다. 이 문제를 풀기 전에 사각형의 종류에 대하여 공부하셨다면 바로 풀 수 있으셨을 겁니다.

 

 


 

 

1. Supervised Learning(지도학습)

 

- 정사각형은 사각형이다.
- 마름모는 사각형이다.
- 평행사변형은 사각형이다.
- 원은 원이다.

이와 같이 도형의 이름을 X라고 하고 종류를 Y라고하였을 때, 'X는 Y다' 라는것을 미리 학습 하게 되면 '다음 중 특정 Y가 아닌것은?' 이라는 질문에는 쉽게 답할 수 있습니다.
우리는 여기서 Y를 X의 Label(라벨) 이라고 하는데요, 이렇게 라벨에 대한 정답표가 있는 채로 학습하는 것을 우리는 Supervised Learning(지도 학습)이라고 합니다.

 

 


 

 

2. Unsupervised Learning(비지도학습)

 

이 문제에서는 사실 답이 자명하게 1번이었지만 사전 지식이 아닌 특징을 기반으로 분류해서 문제를 해결하는 방법도 있습니다.

- 2,3,4번은 4개의 선으로 이루어져 있지만, 1번은 1개의 곡선으로 이루어져 있다.
- 2,3,4번은 4개의 꼭지점이 존재하지만, 1번은 없다.

위와 같이 라벨을 전혀 모른채로 도형의 특성만으로 다른하나를 골라낼 수 있습니다. 이런 방식으로 학습하는 방식을 우리는 Unsupervised Learning(비지도 학습)이라고 합니다.

 

 


 

 

3. Reinforcement Learning(강화학습)

 

하지만 위의 해결방법들과 같이 어떠한 정보로써 접근하는 것이아닌 문제를 여러번 해결하여 가장높은 보상을 받는 쪽으로 정답을 유추하는 방법도 존재합니다.

- 1번을 선택하였는데 2점이 올랐고
- 2번을 선택하였는데 1점이 감소하였다.
- 3번을 선택하였는데 1점이 감소하였다.
- 4번을 선택하였는데 1점이 감소하였다.

이런 경우라면 같은문제 출현시에 1번을 답으로 고를 것입니다. 즉 문제의 현재 상태를 보고 보상을 최대한 많이 받는 쪽으로 행동을 취하게 학습시키는 방법을 Reinforcement Learning(강화학습) 이라고 합니다.

 

 

'Dev > Artificial Intelligence' 카테고리의 다른 글

[인공지능 개념] Tensor란 무엇인가?  (1) 2019.04.08

+ Recent posts