본문 바로가기

전체 글

(124)
5장 오차역전파법 (2) Softmax-with-Loss 크로스 엔트로피를 손실함수로 사용하는 Softmax 계층이다. 계산 그래픈느 다음과 같다. 복잡해 보이지만 뒤에서부터 차근차근 이해하면 어렵지 않다. 결론적으로 이 계층의 역전파 결과는 $Y-T$로 깔끔하게 떨어진다. 이러한 부분이 오차역전파가 계산량을 획기적으로 줄여주는 이유이다. 책에서는 이러한 결과가 우연이 아니고 크로스 엔트로피라는 함수가 이렇게 설계되었다고 한다. 이를 클래스로 구현해보자 class SoftmaxWithLoss: def __init__(self): self.loss = None self.y = None self.t = None # (one-hot) def forward(self, x, t): self.t = t self.y = softmax(x) ..
5장 오차역전파법 (1) 계산 그래프 계산 그래프는 계산 과정을 그래프로 나타낸 것이고, 노드와 에지로 표현된다. 이렇게 생겼다. 역전파는 반대 방향의 굵은 화살표로 표현한다. 역전파의 엣지 값이 전달되는 미분 값이다. 근데 솔직히 이렇게 숫자로 되어있는 것으로 보면 더 헷갈린다. 그냥 수식으로 보는게 낫다 계산 그래프의 역전파 노드를 기준으로 $y = f(x)$ 라는 수식을 정의하고 ${\partial y}/{\partial x}$ 을 구한뒤 상류에서 흘러들어온 미분값 E에 ${\partial y}/{\partial x}$ 을 곱해서 하류에 전달한다. 이 규칙만 지키면 된다. 덧셈 노드의 역전파 $z = x + y$라는 식이 있고, z의 x에 대한 편미분, y에 대한 편미분은 다음과 같다. 이를 계산 그래프로 표현하면 다음과 ..
4장 신경망 학습 (2) 학습 알고리즘 구현하기 1단계 - 미니배치 훈련 데이터 중 일부를 무작위로 가져온다. 이렇게 선별한 데이터를 미니배치라 하며, 그 미니배치의 손실 함수 값을 줄이는 것이 목표이다. 2단계 - 기울기 산출 손실함수에 대한 각 가중치 매개변수의 기울기를 구한다. 3단계 - 매개변수 갱신 가중치 매개변수를 learning rate 만큼 기울기 방향으로 갱신한다. 4단계 - 반복 1~3단계를 반복한다. 2층 신경망 클래스 구현하기 class TwoLayerNet: def __init__(self, input_size, hidden_size, output_size, weight_init_std=0.01): # 가중치 초기화 self.params = {} self.params['W1'] = weight_init_s..
4장 신경망 학습 (1) 앞 장에서 퍼셉트론과 달리 신경망은 데이터로부터 매개변수를 스스로 학습할 수 있는 능력이 있다고 했다. 손실 함수 근데 학습을 하려면 뭔가 기준이 있어야 한다. 마치 우리가 공부를 하고 시험을 친 뒤 시험 성적을 가지고 잘했네, 못했네를 판가름하는 것 처럼. 손실 함수가 시험 역할을 하는 것이다. 신경망이 학습을 하고 손실 함수를 지표로 삼아 학습을 잘했는지, 못했는지 판가름할 수 있다. Sum of Squares for Error, 오차제곱합 $y_k$는 출력 $t_k$는 정답 레이블, k는 데이터의 차원수를 나타낸다. y = np.array([0.1, 0.2, 0.3, 0.4]) t = np.array([0, 0, 0, 1]) y는 소프트맥스의 출력이고 t는 원-핫 인코딩이다. y가 인덱스 3일 확률..
3장 신경망 퍼셉트론과 신경망의 차이는 매개변수(가중치, 편향)에 있다. 퍼셉트론은 사람이 직접 매개변수를 설정해야 하지만 신경망은 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 있다. 근데 이 능력은 다음장에서 배운다. 활성화 함수 - 입력 신호의 총합을 출력 신호로 변환하는 함수 이를 수식으로 나타내면 다음과 같다. 여기서 $h()$가 활성화 함수를 의미한다. 활성화 함수의 종류를 알아보자 Step function (계단 함수) 입력이 0을 넘으면 1을 출력하고, 그 외에는 0을 출력하는 함수이다. 신경망에서 step function을 활성화 함수로 사용하지는 않고 Sigmoid와 비교하기 위해 알아본다. def step_function(x): return np.array(x > 0, dtype=n..
2장 퍼셉트론 퍼셉트론이란? 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 퍼셉트론 신호는 1이나 0 두가지 값을 가질 수 있다. x1, x2는 입력 신호, w1, w2는 가중치, y는 출력신호를 뜻한다. 원은 뉴런 혹은 노드라고 부른다. 입력 신호가 뉴런에 보내질 때 각각 고유한 가중치가 곱해지고 이것들의 총 합이 임계값 θ를 넘어서면 1, 아니면 0을 출력한다. 퍼셉트론은 복수의 입력 신호에 각각 고유한 가중치를 부여하는데 이 가중치가 결과를 결정하는 요소로 작용한다. 즉, 가중치가 클수록 해당 신호가 그만큼 더 중요하다는 뜻이다. 단순한 논리 회로 AND 게이트 두 입력이 모두 1일 때만 1을 출력한다. def AND(x1, x2): x = np.array([x1, x2]) w = np.arra..
unzip zip으로 압축된 파일을 푸는 명령어 압축을 해제하지 않고 압축 파일내의 목록만 출력 unzip -l compressed.zip 현재 경로에 압축 해제 unzip compressed.zip 특정 경로에 해제 -d 옵션을 사용하여 경로를 지정할 수 있다. unzip compressed.zip -d /path/to/put 참고 https://www.lesstif.com/lpt/linux-zip-unzip-80248839.html
ls list의 줄임말로 지정한 경로에 위치한 디렉토리 or 파일을 출력하는 명령어 이다. ls [옵션][디렉토리] 자주 사용하는 옵션 -a : all, 숨겨진 파일이나 디렉토리도 보여준다. -l : long, 자세한 내용을 출력한다. 퍼미션, 포함된 파일수, 소유자, 그룹, 파일크기, 수정일자, 파일이름 -s : size, 파일 크기 순으로 정렬하여 출력한다. -r : reverse, 거꾸로 출력한다. (기본은 알파벳 순서) -R : recursive, 하위 디렉토리까지 출력한다. -h : human, K, M, G 단위를 사용하여 파일 크기를 사람이 보기 좋게 표시한다. -lu : -l 명령어는 기본적으로 mtime(수정 시간)을 출력한다. u 옵션을 사용하면 atime(접근 시간)을 출력한다. -lc :..