-
2. Neural Network 기초-1 ( 데이터 정의 및 활성함수)NN 2021. 9. 12. 16:10
안녕하세요. 조쉬입니다 :)!
오늘부터는 딥러닝을 이야기 해보려 합니다. 아주 기초부터 천천히 빌드업을 해나갈 예정이라 초반부에는 딥러닝에 필요한 기초 개념부터 짚고 넘어가려 합니다.
1. 데이터 정의
딥러닝에서 사용되는 데이터는 보통 2D or 3D tensor의 형태입니다.
첫번쨰는 1D 형태의 데이터, 두번째는 2D형태의 데이터입니다. tensor로 변환하여도 기본 데이터의 형태는 동일합니다. 데이터의 형태를 이해하는 것이 제일 중요한 이유는 딥러닝은 데이터의 형태를 변형하면서 동시에 딥러닝 모델의 구조가 변화되기 때문입니다. 아래 그림에서 데이터의 형태를 간단하게 보겠습니다.
source: https://www.researchgate.net/figure/Cattells-data-cube-represents-three-dimensions-of-data-the-person-dimension-top-to_fig3_297226037 z 축은 사람 차원(데이터의 row 수), x축은 변수 차원(데이터의 column 수), y축은 hidden 차원으로 보면 됩니다.
- ROW Dimension
z 축에서 보이는 row 수는 보통 batch 사이즈를 조정하여 모델이 한번 진행될 때 동시에 계산될 matrix의 크기를 결정하는 데 사용됩니다. 주의해야 할 점은 batch size별로 데이터가 분리될 때 마지막 batch에 포함되는 row 수가 1개 이거나 상대적으로 적은 경우 데이터가 균등하게 분리되지가 않았기 때문에 여러 가지 문제가 발생할 수 있습니다. 대표적인 에러로 row가 1개일 경우 딥러닝 구조 내에 batch normalization이 포함되었을 때 에러가 발생하게 됩니다.
- Variable Dimension
x축에서 보이는 variable 수는 사용하는 데이터의 변수 갯수입니다. 해당 차원은 모델의 I/O 및 내부 구조상 가장 변환이 많은 차원입니다. 예시로 입력 변수 차원이 10이고 타겟은 이진 분류라고 할 때 output 차원은 2차원이 됩니다. 이 경우에 데이터는 초반 10차원에서 딥러닝 모델 내부에서 변환을 거친 후 2차원으로 차원 축소가 되어 나가게 됩니다. 차원이 변환되는 법은 간단합니다. 10 * 10의 matrix가 있을 때 10 * 2의 matrix를 곱한다면 (10 * 10) */* (10 * 2) 이므로 결과는 10 * 2의 matrix가 나오게 됩니다. 추가적으로 모델 내부에서 변환이 되어 생기는 구조적 이점은 다음에 좀 더 깊이 이야기해보도록 하겠습니다.
- Hidden Dimension
y축의 hidden 차원은 하나의 값을 얼마나 다양한 방법으로 표현할 것인가에 대한 차원입니다. BERT를 예시로 들자면 모델 초반 embedding시에 hidden dimension을 768차원으로 세팅하고 있습니다. 이럴경우 하나의 토큰을 768차원으로 표현하여 데이터의 정보를 다각적으로 표현하겠다는 뜻이 됩니다. 이처럼 hidden dimension은 data를 좀 더 명확하게 표현하여 단어의 의미를 구분하거나 유사도를 확인하는 등 여러 방면으로 사용이 가능한 차원입니다. 대신 차원의 크기가 너무 커질 경우 모델의 사이즈가 커지게 되어 모델 자체의 크기가 커지게 되는 문제점이 생길 수 있습니다.
2. Activation Function
딥러닝에서 가장 중요한 구조중 하나는 activation function, 즉 활성함수입니다. 아래의 perceptron으로 활성 함수의 예시와 활용법을 알아보겠습니다.
source: https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464 왼쪽의 노란 input으로 부터 오른쪽의 주황 output으로 갈 때 input에 weight와 bias를 추가하여 계산함과 동시에 활성 함수 추가하여 추가적인 변형을 가할 수 있게 됩니다. 활성 함수는 주로 선형 모델에 비선형적 구조를 추가할 때 사용이 됩니다.
- Sigmoid Activation Function (Logistic Activation Function)
source: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6 약칭 sigmoid function으로 불리는 이 함수는 결과를 0 ~ 1 사이의 값으로 한정시켜 주기 때문에 예측 확률을 output으로 가져야 할 때 사용됩니다. 함수 자체가 monotonic 하며 미분 가능한 함수입니다. Multiclass 분류 시 softmax로 대체가 가능합니다.
- Tanh (Hyperbolic Tangent Activation Function)
source: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6 이 함수는 sigmoid보다 좀 더 음수를 명확하게 구분한다는 점과 이진 분류에서 사용된다는 점에서 차이가 있습니다. 그 이외 특성은 sigmoid와 동일합니다.
- ReLU (Rectified Linear Unit) Activation Function
source: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6 가장 널리 쓰이는 함수인 ReLU 활성함수입니다. 해당 함수는 0 이하의 값은 0으로 밀어버리고 나머지는 입력값을 그대로 사용하는 방법입니다. 해당 함수의 가장 큰 특징인 0 이하의 값을 0으로 처리하는 방식 덕분에 연산량이 대폭 감소하는 긍정적인 특징이 있으나 역으로 음수를 제대로 설명하지 못한다는 큰 단점도 있습니다.
- Leakey ReLU
source: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6 ReLU의 음수 대처능력을 향상시키기 위해 음수 입력 쪽을 살짝 열어둔(leak) 함수입니다. 보통 음수 쪽의 상관 계수 알파 값은 0.01 정도로 사용됩니다. ReLU 함수들은 모두 monotonic 하며 미분 가능합니다.
미분가능성을 계속 체크하는 이유는 gradient update시에 미분 값으로 업데이트의 방향성을 결정짓기 때문입니다.
source: https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6 참고자료:
https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6
Activation Functions in Neural Networks
Sigmoid, tanh, Softmax, ReLU, Leaky ReLU EXPLAINED !!!
towardsdatascience.com
'NN' 카테고리의 다른 글
6. Temporal Fusion Transformers (0) 2021.12.30 5. TabNet (0) 2021.12.28 4. CNN과 Computer Vision (0) 2021.11.14 3. Neural Network 기초-2 (개념과 구조) (0) 2021.10.09 1. Attention A to N까지(feat. Transformer) (0) 2021.07.04