전체 글

전체 글

    [C++] 백준 15650번 문제풀이

    순열과 조합을 정리 하려 한다. 먼저 , 순열이란 서로 다른 n개중에 r 개를 선택하는 경우의수 ( 순서 상관 있다. ) 조합이란 서로 다른 n개중에서 r개를 선택하는 경우의 수 ( 순서 상관 없다 .) #define n 4 #define r 3 1. 순열 ( 순서 O, 중복 X ) int pArr[r] = { 0, }; bool check[n + 1] = { false, }; //중복 검사 void permutation(int depth){ if(depth == r){ printArray(pArr); return; } for(int i = 1; i

    [프로그래머스 문제풀이] 더 맵게 문제풀이

    우선순위 큐를 생각하자,, 우선운위큐의 존재만 안다면 쉽게 풀 수 있는 문제였다. vector로 풀었더니 효율성 test를 아예 통과하지 못한다. 우선순위큐 사용 방법 다시 생각하기 #include #include #include using namespace std; int solution(vector scoville, int K) { int answer = 0; priority_queue pq; for(int i=0;i

    [cs231n 강의 정리] Lecture 7 : CNN

    [cs231n 강의 정리] Lecture 7 : CNN

    Convolution layer 기본 구조 여기서 depth는 항상 같다 5x5x3 을 하나의 숫자로 바꾸는 작업이다. 하나의 필터는 하나의 activation map 을 만든다. 28 * 28 * 6 은 다음 Layer 의 input 파란색 실선을 보게 되면 주황색을 나타내는데 하얀부분은 activation function 이 높은 경우, 검은색 부분은 activation function 이 낮은 경우이다. 7 * 7 을 3 * 3 Filter를 사용하고 stride 가 2일 땐 3*3 Padding 이 필요한 이유 input ouput size 동일하게 해준다. ( 0으로 되게 되면 convolution 진행 불가 ) Filter 의 크기가 1 * 1 도 의미가 있음? 있다 ! 2차원일 때는 똑같지만..

    [프로그래머스] 다음 큰 숫자 문제풀이

    bitset 의 존재만 알고 자세히 다루진 못했는데 이 문제를 풀면서 bitset에대해 더 알게 되었다. 다른문제풀이를 보니 계속 2로 나누어서 1의 개수를 세는 문제풀이도 있었고 , biset 의 함수중에 count 라는 함수를 써서 엄청 짧게 푼 문제풀이도 있었다. 많이 알 수록 간단해 지는것 같다. #include #include #include using namespace std; int solution(int n) { int answer = 0; bitset bit(n); string s1 = bit.to_string(); int ones=0; for(int i=0;i

    [cs231n 강의 정리] Lecture 6 : Training NN part 2

    [cs231n 강의 정리] Lecture 6 : Training NN part 2

    Parameter Update SGD : 너무 느려서 실제 상황에선 쓰기 힘들다. 느린 이유 : loss function 이 수직으로는 경사가 급하기 때문에 빨리간다. 수평으론 반대로 느리게 간다. 지그재그로 가기 때문에 느리게 된다. 이런 문제를 개선하는 방법 : Momentum Update : Gradient descemt 에선 x 의 위치 직접 Update , Momentum Update에선 v (속도 , 0.5,0.9) 를 업데이트하여 x를 Update한다. If 언덕에서 공을 굴릴 때 : Gradient : 가속도에 비례 mu : 마찰 계수 -> 점차 속도가 느려진다. ( 경사가 급하지 않을 때 갈 수록 빨라진다 , 경사가 급할 때 minimum 을 지나갔다가 다시 돌아온다. ) 초반엔 Over..

    [cs231n 강의 정리] Lecture 5 : Training NN part 1

    [cs231n 강의 정리] Lecture 5 : Training NN part 1

    ConvNets 은 data 가 많지 않아도 학습 가능하다 . -> fine tuning 때문이다. 1. Train on ImageNet 2. Finetune network on your own data 가중치 공유 Finetuning : 다른곳에서 학습 시켜 가져온 가중치들을 새로운 모델의 초기값으로 사용한다. -> network 학습 아래부분만 새로 학습한다. Terminal 은 무한이 아니다. ( 너무 많이 돌리지 마라 ) Mini-batch SGD 1. Sample a batch of data 2. Forward prop it through the graph, get loss 3. Backprop to calculate the gradients 4. Update the parameters usin..

    [cs231n 강의 정리] Lecture 4 : Backpropagation and Neural Networks part 1

    [cs231n 강의 정리] Lecture 4 : Backpropagation and Neural Networks part 1

    input 이 마지막에 어느정도 영향을 끼치는가 ? 이를 알기 위해 Backward Pass 필요하다. 함수를 하나의 layer 이고 forward pass 할 때 local gradient 를 구할 수 있다. ( 메모리에 저장 ) global gradient 는 backward pass 할 때 구할 수 있다. 이런식으로 끝까지 가게 되면 Backward pass z 가 여러개라면 더해주면 된다. Backpropagation Example Sigmoid function 을 이용한 간단한 방법 and gate : gradient distributor -> 전 gradient 를 그대로 전파 ( local gradient 가 1) mul gate : local gradient 가 곱하는 반대쪽 값이 된다. ..

    [cs231n 강의 정리] Lecture 3 : Loss functions and Optimization

    [cs231n 강의 정리] Lecture 3 : Loss functions and Optimization

    이번 강의에서 다룰 것들 : Score 에 대해 불만족하는 정도를 정량화하는 Loss functions , Loss functions 을 최소화하는 Parameter 값을 찾는 과정인 Optimization에 대해서 다룰것이다. SVM : Hinge Loss Sj = 잘못된 label의 score Sy(i) = 제대로 된 label의 score 질문 : SVM loss 구하는데 있어서 j=y_i 는 계산을 하지 않고 있다 . 만약 모든 class에 대해서 계산한다면 어떤 결과가 나올것인가 ? 답 : 각각의 Loss 에 1을 더하게 된다 . 질문 : sum 대신 score들의 mean값을 사용하게 되면 어떤 차이가 있는가 ? 답 : loss 를 minimize하는 parameter를 구하는 것이 목적이기 ..