CNN (합성곱 신경망)은 이미지 인식, 음성 인식 등 다양한 곳에서 사용됩니다. CNN 네트워크를 구현하기 위해서는 합성곱 계층과 폴링 계층이 사용됩니다. 1. 합성곱 계층 완전연결 계층 (Affine 계층)의 문제점은 데이터 형상이 무시된다는 것입니다. 이전의 MNIST 같은 경우도 28 * 28 array를 1줄짜리 784개의 데이터로 변환했습니다. 이러한 문제를 해결하기 위해 합성곱 계층을 사용합니다. - 필터 필터는 합성곱 연산 시 이전의 가중치와 같은 역할을 하는 것입니다. - 합성곱 연산 합성곱 연산은 다음과 같습니다. 필터를 입력데이터에 맞춥니다. 그리고 원소별로 곱합니다. 예를 들어 위와 같이 되는 것입니다. - 패딩 위의 예에서 입력 데이터는 4x4 이지만 결과는 2x2입니다. 이것이 ..
1학년 때 엄청나게 논 태우를 도와주는 문제입니다. 자세한 내용은 책을 참고해주시면 됩니다. 문제 : N개의 과목 중 K개 이상을 수강해야 졸업이 가능하다. 그리고 한 학기마다 열리는 강의의 수는 제한되어있고, 해당 과목을 수강하기 위해서는 선수과목을 들어야한다. 입력 테스트 케이스 C, 전공과목 수 N, 들어야하는 과목 수 K, 학기의 수 M, 한 학기 최대 수강 과목 수 L이 주어진다. 그리고 N개의 줄에 0번 과목부터 선수과목의 목록이 주어진다. 선수과목의 개수와 선수과목 목록을 입력받는다. 예를 들어, 2번 과목의 줄에 3 0 1 3 인 경우 선수과목 3개, 선수과목 목록 : 0,1,3 번 과목 인 것이다. 그 다음으로 해당 학기에 개설되는 과목의 수와 과목 목록을 입력받는다. 예를 들어, 2번 ..
2권의 첫 내용은 비트마스크이다. 익히 알고 있는 내용이지만 새롭게 알게 된 내용도 있고 하여 정리해 보겠다. 우선 비트마스크란, 말 그대로 비트를 가지고 집합과 유사하게 연산하는 것이다. AND, OR, XOR, NOT, shift 연산 등이 있다. 유의 사항 1. C++, java 에서는 &, |, ^, 등 비트 연산자가 ==, != 등 비교 연산자보다 우선순위가 낮다. 반면 파이썬의 경우 비트 연산자의 우선순위가 더 높다. 언어마다 우선순위가 다르니 괄호를 통해 확실히 하는 것이 좋다. 2. 자료형이 다른 경우 오버플로우가 발생한다. 예를 들어, long long a, int b 에 대해 a & (1
원래 재작년에 1권을 봤었다. 그 때는 자료구조도 뭔지 잘 모르고 일단 친구가 알고리즘 공부에는 이 책이 좋다고 하여 1,2권을 바로 샀었다. 하지만 1권만 본 뒤 2권은 보지 못했다. (사실 그 때는 뭘 잘 모르던 때라 그냥 따라 친 수준) 이번 겨울 방학 때부터는 알바 안 하고 공부만 할 것이기 때문에 방학은 조금 지나갔지만 2권을 볼 것이다. 목표는 방학 안에 2권 다 보는 것이다. (지금은 전체적인 내용을 알고 있기 때문에 보는 데 오래 걸리진 않을 것 같다.) 책에 나온 개념을 간단히 정리하고, 예제를 직접 풀어보도록 할 예정이다.
하이퍼파라미터는 뉴런 수 (노드 수), 배치 크기, 학습률, 가중치 감소 등을 말합니다. 하이퍼파라미터의 값 또한 적절한 값을 사용해야 학습이 잘 됩니다. 하이퍼파라미터를 효율적으로 찾아봅시다. 1. 검증 데이터 검증 데이터를 이용해 하이퍼파라미터를 조정합니다. 검증 데이터는 훈련 데이터의 20% 정도를 이용하여 하이퍼파라미터를 조정합니다. - 훈련 데이터 : 매개변수 학습 - 검증 데이터 : 하이퍼파라미터 성능 평가 - 시험 데이터 : 신경망 범용 능력 평가 2. 하이퍼파라미터 최적화 하이퍼파라미터를 대략적인 값으로 지정합니다. 그 다음 최적의 값을 찾고, 그 값의 범위 내에서 또 다시 최적의 값을 찾는 것을 반복하는 것입니다. 순서는 다음과 같습니다. - 하이퍼파라미터 값의 범위를 설정한다. - 설정..