분류 전체보기 18

CNN 구현, 시각화

- 사진은 간단한 CNN 네트워크 예시로, Convolution-ReLU-Pooling-Affine-ReLU-Affine-Softmax 순으로 흐른다. import sys, ossys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정import pickleimport numpy as npfrom collections import OrderedDictfrom common.layers import *from common.gradient import numerical_gradientclass SimpleConvNet: def __init__(self, input_dim=(1, 28, 28), conv_param={'filter_nu..

CNN 풀링 계층

풀링은 세로, 가로 방향의 공간을 줄이는 연산이다.  - 위의 사진은 2X2 최대 풀링(max pooling)을 스트라이드 2로 처리하는 순서이다. - 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 보통이다. - 평균 풀링(average pooling)도 있는데, 대상 영역의 평균을 계산하는 연산이다. 풀링 계층의 특징1. 학습해야 할 매개변수가 없다.2. 채널 수가 변하지 않는다. - 채널마다 독립적으로 계산하기 때문에, 입력 데이터의 채널 수 그대로 출력 데이터로 내보낸다. 3. 입력의 변화에 영향을 적게 받는다(강건하다). - 입력 데이터가 조금 변해도 풀링의 결과는 잘 변화하지 않는다. 합성곱 연산의 필터 처리 상세 과정- 필터를 세로로 1열로 전개하고, im2col이 전개한 데이터..

CNN 합성곱 계층

- CNN(Convolution Neural Network)은 합성곱(Convolution) 연산을 사용하는 ANN(Artificial Neural Network)의 한 종류다. - 합성곱(Convolution)을 활용하면 데이터의 형상을 유지할 수 있다(Affine계층에서는 1차원 데이터로 평탄화시켰다.). 즉, 3차원 속에서 의미를 갖는 본질적인 패턴을 고려할 수 있다. - 이미지 인식과 음성 인식 등 다양한 곳에서 사용된다. 특히 이미지 분야에서 딥러닝을 활용한 기법은 거의 다 CNN이 기초이다. 합성곱 연산- 합성곱 연산은 필터의 window를 일정 간격으로 이동해가며 입력 데이터에 적용한다. - 입력과 필터에서 대응하는 원소끼리 곱한 후 그 총합을 구한다(fused multiply-add, FM..

학습 관련 기술 정리

오버피팅- 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태 - 오버피팅은 주로 1. 매개변수가 많고 표현력이 높은 모델일 때, 2. 훈련 데이터가 적을 때 나타난다.드롭아웃- 뉴런을 임의로 삭제하면서 학습하는 방법이다. - 훈련 때 은닉층의 뉴런을 무작위로 골라 삭제한다. 삭제된 뉴런은 신호를 전달하지 않게 된다. - 시험 때는 모든 뉴런에 신호를 전달한다. 단, 뉴런의 출력에 훈련 때 삭제 안 한 비율을 곱하여 출력한다.   적절한 하이퍼파라미터 값 찾기 각 층의 뉴런 수, 배치 크기, 학습률, 가중치 감소 등 신경망에는 여러개의 하이퍼파라미터가 등장한다. 이러한 하이퍼파라미터의 값을 적절히 설정하는 것은 모델의 성능에 큰 영향을 미친다. 하지만 그 값을 결정..

배치 정규화

- 배치 정규화(Batch Normalization): 각 층에서의 활성화값이 적당히 분포되도록 조정하는 것 배치 정규화 알고리즘- 배치 정규화는 학습 시 데이터 분포가 평균이 0, 분산이 1이 되도록 미니배치를 단위로 정규화한다.배치 정규화의 장점1. 학습을 빨리 진행할 수 있다.(학습 속도 개선) 2. 초깃값에 크게 의존하지 않는다. 3. 오버피팅을 억제한다. (드롭아웃 등의 필요성 감소) MNIST 데이터셋을 사용한 배치 정규화 계층 사용에 따른 학습진도 차이- 실선이 배치 정규화를 사용한 경우 ,점선이 사용하지 않은 경우이다. - 거의 모든 경우에서 배치 정규화를 사용할 때의 학습 진도가 빠르다.

가중치의 초깃값

초깃값을 0으로 하면?- 가중치 감소(weight decay): 가중치 매개변수의 값이 작아지도록 학습하는 방법으로, 가중치 값을 작게 하여 오버피팅이 일어나지 않게 한다. - 가중치를 모두 0같은 균일한 값으로 설정하면, 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되어 버린다. 그러므로 가중치 초깃값은 무작위로 설정해야 한다.   은닉층의 활성화값 분포- 활성화함수로 시그모이드를 사용하는 5층 신경망에 가중치의 표준편차를 바꿔가며 활성화값(활성화함수 출력 데이터)을 관찰 - 가중치의 표준편차가 1일때, 각 층의 활성화값이 0과 1에 분포되었다. 출력이 0에 가까워지면 그 미분은 0에 다가간다. - 기울기 소실(gradient vanishing): 데이터가 0과 1에 치우쳐 분포하면 역전파의 기울기 ..

매개변수 갱신

매개변수 갱신 신경망 학습의 목적은 매개변수의 최적값을 찾는 문제(손실함수의 값을 가능한 한 낮추는 매개변수를 찾는 것)이다. 이러한 문제를 푸는 것을 최적화(optimization)이라 한다. 확률적 경사 하강법(SGD: Stochastic Gradient descent)- SGD는 단순하고 구현도 쉽지만, 문제에 따라서 비효율적일 때가 있다. - 비등방성(anisotropy)함수(방향에 따라 기울기가 달라지는 함수)에서는 탐색 경로가 비효율적이다. 코드class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, params, grads): for key in params.keys(): ..

역전파(Backpropagation)

덧셈, 곱셈 역전파덧셈, 곱셈 역전파 문제풀이(p.160)ReLU, Sigmoid 역전파Affine 역전파 배치용 Affine 역전파 Softmax-with-Loss 역전파(간소화) - Softmax는 입력값을 정규화(출력의 합이 1이 되도록)하여 출력한다. - 신경망에서 수행하는 작업은 학습, 추론이 있다. 추론에서 답을 하나만 내는 경우에는 가장 높은 점수만 알면 되어서 Softmax 계층은 필요 없지만, 학습할 때는 필요하다. - y는 Softmax 계층의 출력이고, t는 정답 레이블(One-Hot Encoding)이므로 역전파는 Softmax 계층의 출력과 정답 레이블의 차분이다. (역전파가 깔끔하게 떨어지는 이유는 Cross Entropy Error 함수가 그렇게 설계되었기 때문이다! 회귀의 출..

백준 24444번: 알고리즘 수업 - 너비 우선 탐색 1 (Python)

알고리즘 수업 - 너비 우선 탐색 1 문제 오늘도 서준이는 너비 우선 탐색(BFS) 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 정점과 M개의 간선으로 구성된 무방향 그래프(undirected graph)가 주어진다. 정점 번호는 1번부터 N번이고 모든 간선의 가중치는 1이다. 정점 R에서 시작하여 너비 우선 탐색으로 노드를 방문할 경우 노드의 방문 순서를 출력하자. 너비 우선 탐색 의사 코드는 다음과 같다. 인접 정점은 오름차순으로 방문한다. bfs(V, E, R) { # V : 정점 집합, E : 간선 집합, R : 시작 정점 for each v ∈ V - {R} visited[v]

코딩 테스트 2023.02.17

프로그래머스 우박수열 정적분 python

https://school.programmers.co.kr/learn/courses/30/lessons/134239# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 우박수열로 만든 꺾은선 그래프의 일정 구간 넓이를 구하는 문제이다. 코드 import itertools def solution(k, ranges): answer = [] sum=[0] while k!=1: if k%2==0: next_k=k/2 sum.append(next_k*1.5) else: next_k=k*3+1 sum.append(k+(next_k-k)*0.5) k=next_k area..

코딩 테스트 2023.02.13