(DL) SLP란?

이준우·2021년 10월 10일
0

프레임워크를 사용하여 공부하다보니 그 안에서 어떤 식으로 처리가 되고 결과가 나오는지 원체 모르겠다. (┬┬﹏┬┬) 그래서 찾다보니 윤덕호 분께서 파이썬 날코딩으로 딥러닝을 분석하는 책이 있어 그에 관해 공부를 하며 내용을 정리해보려고 한다.

Single Layer Perceptrons인 SLP에 대해 알아보자

1.1 단층 퍼셉트론의 구조

우선 학습하기 전에 Dataset이 필요하다.
https://www.kaggle.com/rodolfomendes/abalone-dataset 에 들어가서 전복관련 dataset을 받도록 하자.

단층 퍼셉트론에 퍼셉트론들은 입력 벡터만 공유할 뿐 각자의 가중치 벡터와 편향값에 따라 각자의 방식으로 독립적인 정보를 생산한다. 여기서 P1의 가중치 벡터값은 (w11, w21, w31, w41)이고 편향값은 (b1)이라고 이해하면 된다.

학습 과정 중에 끊임없이 변경되어 가면서 퍼셉트론의 동작 특성을 결정하는 값들을 파라미터라고 한다.가중치와 편향은 대표적인 파라미터이다. (???) 뭐지 그럼 파라미터와 퍼셉트론은 같은건가? 전혀 다르다.

퍼셉트론은 입출력을 갖고 있는 하나의 시스템이다.
위의 그림이 퍼셉트론이다. 입력과 출력을 갖고 있는 구조로 되어 있다. 여기서 퍼셉트론의 동작 특성을 결정하는 값(파라미터)은 처리 부분이다. 이 처리같은 경우 가중치의 값이 변하면 계속해서 값이 변하기 때문이다.

SLP같은 경우에는 퍼셉트론들끼리 서로 연결되어 있지 않기 때문에 높은 성능을 바라면 안된다. 나중에 MLP를 배우게 되면 input layer - hidden layer - output layer 순으로 진행하는 것을 볼 수 있지만, SLP는 간단한 구조라 hidden layer가 존재하지 않는다. 즉 input layer - output layer로만 구성된 아주 간단한 구조이다. (여담으로 input layer의 존재 유무에 대해 논하는 사람들도 있긴 하다. 퍼셉트론에 의해 생성되는 것이 아니라 입력 데이터들이 바로 hidden layer 혹은 output layer에 전달되는 것이기 때문이다.)그림으로 설명하자면 이러한 구조라는 것인데, 그렇게 와닿지는 않는다. SLP에서 input_layer가 없다면 저 input_layer을 hidden_layer로 봐야되는 것인데 이치에 맞지 않다. 어떻게 해석을 하냐에 따라 다른 거지만 나는 input_layer는 존재한다고 생각하고 설명을 진행하도록 하겠다.

1.2 텐서 연산과 미니배치의 활용

그림을 보면 텐서는 큰 개념이라는 것을 알 수 있다. 0차원은 스칼라, 1차원은 벡터, 2차원은 텐서(행렬), 다차원은 텐서.. 2차원부터 텐서라고 알고 있으면 된다.

딥러닝에서 신경망이 여러 데이터를 한꺼번에 처리하는 것을 미니배치라고 한다.
여기서 살짝 헷갈릴 수도 있다. "왜 b번 같은 경우 입력이 한개인지?__(머리 아파!!)" 하지만 분명이 하나의 입력이다. 하나의 데이터가 여러개의 특성을 갖는 것일 수도 있다. 예를 들어 X를 집값이라고 생각해보자. 집값 안에는 여러개의 요소가 들어있을 수 있다. 역세권인지, 도시랑 가까운지, 집이 큰지 작은지 등등.. 이런 요소들을 하나로 갖고 있는 것을 X라고 생각하면 된다. 하지만 미니배치 같은 경우에는 여러개의 X1, X2, X3... 로 이루어져 있다.

여기서 우리가 알아야할 것은 단층 퍼셉트론은 거의 c와 같이 이루어져 있다는 것이다. 쉽게 표현하기 위해 a, b처럼 설명을 하는 것이지 내부는 그렇지 않다.

y = (x1w1 + x2w2 + ... + xnwn = XW + b)로 계산된다. 이를 계속해서 반복문을 이용해 계산하는 형식이 아니라 벡터의 내적을 이용해서 계산을 한다.

입력 성분의 일차식으로 표현되는 이런 계산 과정을 선형 연산이라 한다.
일차식으로 나타낼 수 없는 계산 과정을 비선형 연산이라 한다.

학습데이터 전체에 대한 한 차례 처리를 에포크(epoch)라 부른다.
딥러닝에서는 에포크 수나 미니배치 크기처럼 학습 과정에서 변경되지 않으면서 신경망 구조나 학습 결과에 영향을 미치는 고려 요인들을 하이퍼파라미터라고 부른다.

하이퍼파라미터는 number of epochs, learning_rate, parameter of KNN - k 등이 있다. 공부를 하다보면 천천히 알게될 내용들이니 겁먹지 말자.

1.3 신경망의 3가지 출력 유형

  1. 회귀(regression) 분석
  2. 이진(binary) 판단
  3. 선택 분류(classification)

1.4 딥러닝에서 여러 가지 값!

이들은 총 4가지로 구성할 수 있다.

1. 학습에 사용되는 데이터처럼 외부에서 주어지는 값
2. 순전파와 역전파 처리 과정에서 생성되는 각종 중간 계산 결과
3. 퍼셉트론의 가중치와 편향
4. 하이퍼파라미터(학습률, 학습 횟수, 미니배치 크기)

profile
꿈꾸는 CV

0개의 댓글