선호하는 프레임워크 & 하이퍼 파라미터 & 볼츠만 머신 & Data Normalization & GPU
# 선호하는 프레임워크와 그 이유는?
Keras: 케라스를 통해 맨 처음으로 딥러닝을 시작함. 알아보기 쉽고 쓰기 간편함. 텐서플로우에 비해 layer를 쌓는게 쉬움. 세부 설정들은 쉽게 바꾸지 못한다는 단점. 실제 프로젝트에서, 모델 훈련시 F1 score를 표시해주지 않아서 팀원 중 한 명이 fit 함수 자체를 뜯어서 F1 score를 표시하도록 만듦.
Pytorch: class 개념을 알면 직관적이고 이해하기 쉬움. 연구 분야에서 많이 사용됨. Convolution이나 Linear layer 등에서 input과 output 노드의 수를 모두 계산해서 적어주어야 한다는 단점. padding도 마찬가지로 직접 계산해줘야 함. 그러나 그러한 과정들을 통해서 CNN의 동작 원리를 좀 더 배울 수 있었음.
# 딥러닝을 할 때 GPU를 쓰면 좋은 점은?
GPU는 메모리에서 대규모 병렬 처리 연산이 가능하다. 구체적으로, 많은 행렬곱 연산을 필요로 하는 딥러닝 모델에서 연산을 병렬로 처리하면 훨씬 계산 속도가 빨라지기 때문에 GPU를 사용한다. CPU는 복잡하고 연속적인 연산을 잘 처리한다.
# 하이퍼 파라미터란?
딥러닝 모델이 정하는 변수가 아닌, 우리가 딥러닝 모델을 돌리기 전에 미리 정해주어야 하는 변수. learning rate, epochs, batch size 등등...
# 볼츠만 머신이란?
기존의 신경망 구조와는 다르게, 각 노드가 양방향으로 연결된 신경망 구조를 이용해 엔트로피가 가장 큰 (즉 feature가 강한) 경우의 weight와 bias를 구하는 방법. ex) 우리는 눈이 매력적인 친구를 찾을 때 '눈, 코, 입'을 사용하여 찾을 수도 있겠지만 '눈'만 보고도 찾을 수 있음 (이때 엔트로피가 가장 큰 값이 '눈'). 이것을 기계가 할 수 있도록 해주는 방법.
# Data Normalization은 무엇이고 왜 필요한가요?
머신러닝, 딥러닝 알고리즘은 데이터가 가진 feature를 비교, 분석하여 패턴을 찾는다. 그런데 이때 투입되는 데이터가 가진 feature의 scale, order가 크게 차이나는 경우, 모델은 어느 feature가 더 중요하고 덜 중요한지 알기 힘들다. 이를 방지하기 위해 데이터가 가진 feature들의 scale을 일정 범위(ex. 0~1사이)로 맞추어 모델이 데이터를 더 잘 알아듣도록 해주는 과정이다.