성능 최적화 데이터를 사용한 성능 최적화 일반적으로 ML/DL 알고리즘은 데이터양이 많을수록 성능이 좋기 때문에 가능한 많은 데이터를 수집 많은 데이터를 수집할 수 없다면 직접 데이터를 만들어 사용 활성화 함수로 시그모이드(0~1의 값), 하이퍼볼릭 탄젠트(-1~1의 값) 등을 사용하여 데이터셋 범위를 조정 정규화, 규제화, 표준화 등도 성능 향상에 도움 알고리즘을 사용한 성능 최적화 ML/DL을 위한 다양한 알고리즘 중 유사한 용도의 알고리즘들을 선택하여 모델을 훈련시켜 보고 최적의 성능을 보이는 알고리즘을 선택해야 한다. 알고리즘 튜닝을 위한 성능 최적화 모델을 하나 선택하여 훈련시키려면 다양한 하이퍼파라미터를 변경하면서 훈련시키고 최적의 성능을 도출해야 한다. 진단 : 성능 향상이 어느 순간 멈췄을..
매개변수 갱신 확률적 경사 하강법(SGD) 신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것으로 이는 곧 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 푸는 것을 `최적화(optimization)`이라고 한다. 최적의 매개변수 값을 찾기 위한 단서로 매개변수의 기울기(미분)를 이용하는데, 매개변수의 기울기를 구해 기울어진 방향으로 매개변수 값을 갱신하는 일을 반복해서 최적의 값을 향해 다가가는 것이 `확률적 경사 하강법(SGD)`이다. SGD는 다음과 같은 수식으로 표현이 가능하다. 결국 SGD는 기울어진 방향으로 일정 거리만 가겠다는 단순한 방법이다. SGD를 파이썬 코드로 구현하면 다음과 같다. class SGD: def __init__(self, lr=0.01): se..
가중치 초기화(Weight Initialization) 신경망을 학습할 때 손실 함수에서 출발 위치를 결정하는 방법이 모델 `초기화(initialization)`이다. 특히 가중치는 모델의 파라미터에서 가장 큰 비중을 차지하기 때문에 가중치의 초기화 방법에 따라 학습 성능이 크게 달라질 수 있다. 상수 초기화 신경망의 가중치를 모두 0으로 초기화하여 뉴런의 가중치가 0이면 가중 합산 결과는 항상 0이 되고, 활성 함수는 가중 합산 결과인 0을 입력받아서 늘 같은 값을 출력한다. 예를 들어 활성 함수가 ReLU나 하이퍼볼릭 탄젠트면 출력은 0이 되고 시그모이드면 출력은 항상 0.5가 된다. 0이 아닌 다른 값의 경우에도 만약 가중치를 모두 같은 상수로 초기화하면 신경망에 `대칭성(symmetry)`이 생겨..