12. RNN
·
AI/머신러닝(딥러닝) 정리
이번 장은 딥러닝 개발자들? 이 말하는 꽃이라 생각하는? RNN 에 대하여 정리를 해볼 것이다. 우리가 사용하는 데이터에는 연속된 데이터들이 많이 존재한다. 예를들어, 음성인식, 문장, 책, 주식 데이터 등등 하나의 데이터로는 이해하기 힘든 연속된 데이터를 활용하여 이해해야한다. 우리는 문장을 이해할 때에도 전에 사용한 단어를 중심으로 연속된 데이터로 이해를 하게 된다. 지금까지는 하나의 입력이 들어오게 된다면 출력을 하게 되는 것을 알아보았다면 이제는 우리는 연속된 데이터를 받아 들일 것이다. CNN/ NN 은 이러한 것을 하지 못하게 된다. 우리는 아래 그림과 같은 모델을 RNN이라 한다. 이렇게 RNN은 하나의 입력을 각각의 셀에서 출력을 나타내게 된다. 그럼 우리는 이걸 어떻게 계산을 하게 될까?..
11-3. CNN case
·
AI/머신러닝(딥러닝) 정리
이번 장에서는 실제 cnn이 어떤 방식으로 구현되고 있는 지를 알아볼 것이다. 초기 cnn을 발견하신 LeCun 이라는 교수님이다. 이분은 2020년도인가에도 상을 받으셨다고 한다. 지금까지 우리가 배운 것을 보고 위의 그림을 이해 해보자 인풋 이미지는 32*32*1(흑백 이미지이기 때문에 1이다.)이며 6개의 필터를 사용한 것을 알수 있다. 다음 conv연산 이후 하나의 층이 6 layer가 생성 되었지 때문이다. 밑에 영어를 보니 conv 연산에 사용된 필터는 5*5 , stride 1을 사용하였다고 한다. pooling 연산에는 2*2 filter에 stride 2 를 사용 했다고 한다. 한번 풀링을 한 후에 다시 conv 연산에 사용된 필터는 16개이다. layer 가 16개로 늘어났기 때문이다...
11-2. CNN (Convolutional Neural Networks) - Max pooling and others
·
AI/머신러닝(딥러닝) 정리
이번장에서는 cnn에 사용되는 연산 중 하나인 pooling이라는 것을 배우게 될 것이다. CNN을 보면 알수 있지만 중간 중간 POOL이라는 연산 층이 보인다. 이걸 하는 이유 그리고 방법에 대하여 알아볼 것이다. Pooling 이란 sampling 이라고도 하며 한개의 layer를 작게 resize를 하는 방법과 같은 것이다. 그럼 어떤 방식으로하냐는 것은 sampling을 하듯이 각각의 layer에서 값을 뽑아내는 방식과 같다. 따라서 한개의 layer를 pooling을 해주게 되면 이미지가 작아지게 되며 깊이 layer의 수는 유지가 된다. 가장 많이 사용하는 방식은 max pool이다. 일정 필터의 크기중에서 가장 큰 값만 뽑아내는 것이다.(참고로 여기에서도 stride 개념이 사용된다. 위에 ..
11-1. CNN (Convolutional Neural Networks)
·
AI/머신러닝(딥러닝) 정리
이제는 이미지 검출 분류에 많이 사용되는 딥러닝 신경망인 cnn을 알아볼 것이다. cnn의 등장 배경에는 고양이 실험에서 시작이 되었다. 고양이에게 어떤 형태의 그림을 보여줬더니 고양이 뇌의 뉴런이 특정 부분의 이미지에만 반응하는 것을 알게 되었다. 따라서 입력을 이미지의 전체가 아닌 일부분만 반응하는 것을 알게 되었고 이 생각을 conv에 적용을 해보았다. 위의 오른쪽 그림을 보면 알겠지만 각가의 이미지를 잘게 자르게 된다. 각가의 입력으로 넘기게 되며 네트워크의 연산을 거치게 되며 각가의 이미지는 특징을 가지게 된다. 네트워크에 사용되는 연산에 대한 것은 차후에 자세히 알아보자. 이미지의 예시로 32*32*3의 이미지를 가져온다 (3은 rgb 이다.) 이런 형태의 이미지에 우리는 필터를 사용해서 연산..
10-3. NN dropout and model ensemble
·
AI/머신러닝(딥러닝) 정리
이제 우리는 더 학습을 좋게 시키는 방법들에 대하여 알아볼 것이다. 첫번째로 dropout 이다. 말그대로 덜어내는 것이다. 학습을 오히려 많이 시키게 되면서 overfitting 이라는 문제가 생긴다. overfitting 은 성능을 저하시키는 아주 큰 요인이 된다. 이러한 것의 해결책은 1. 더 많은 데이터 사용하기 2. 특징의 수 줄이기(굳이 할 필요는 없다) 3. 정규화가 있다. 정규화는 수학적으로 cost 함수의 값 뒤에 붙이는 방법이 있다. 다음으로는 drop라는 방법인데 학습 중에 몇개의 노드를 랜덤하게 중간에 그만 둬버리는것 안사용하는 것이다. 과연? 이게 좋은 방법일까? 예를 들어 어떤 각가의 뉴런들은 어떤 분야의 전문가 들이다. 고양이를 구분할때 이건 귀야, 이건 코야, 이건 꼬리야 이..
10-2. Initialize weights in a smart way
·
AI/머신러닝(딥러닝) 정리
우리는 vanishing을 해결했다. 다음 문제로는 우리는 가중치 값을 멍청하게 정했다는 것이다. 그럼 이번 장에서는 어떻게 초기 가중치 값을 어떻게 잘 줄까? 라는 것에 집중해보자 우리는 같음 함수로 학습을 시켰음에도 불구하고 모델의 성능이 다를 수 있는 것을 볼수 있다. 이러한 원인은 가중치 설정으로 인해 발생하는 것이다. w를 우리는 일반적으로 -1~1 사이의 값을 준다. 램덤 값을 주는데 만약에 w의 초기 값을 0으로 주게된다면 chain rule 에서는 w 값을 사용해야하는데 다음 전달 값이 0이 된다.?! 그럼 전달을 해주는게 의미가 없게 되며 그 전달은 의미가 없는 학습이 되게 되는 것이다. 따라서 gradiant가 또 사라지게 된다. 따라서 모든 값을 0을 주게 된다면 안된다. 이러한 문제..
10-1. ReLU : Better non-linearity
·
AI/머신러닝(딥러닝) 정리
우리는 이제 다른 종류의 활성화 함수를 알아볼 것이다. 우리가 알고 있는 활성화 함수는 시그모이드, 소프트맥스와 같은 함수를 이미 알고 있다. 활성화 함수가 뭔지 까먹으신 분들을 위해 다시 개념을 정의 해보면 활성화 함수는 다음으로 전달될때 영향을 주는 함수라고 생각하면된다. 예를 들어 시그모이드의 경우 0~1 사이의 값을 전달해주는 함수처럼 이런 것을 활성화 함수라고 한다. 우리가 새로운 활성화 함수를 다시 배우는 이유가 있다. 딥러닝에서 다시 무엇인가를 찾는 이유는 대부분 성능이 안나와서이다. 우리는 딥러닝의 신경망이 깊고~ 넓어질수록 성능이 향상 됨을 알게되었다. 당연히 사람들은 신경망을 더우더욱 깊고 넓어지게 만들었지만 어느 시점이 되면 성능이 저하 되는 것을 알게 되었다. Backpropagat..
9-2. Backpropagation
·
AI/머신러닝(딥러닝) 정리
이제 깊어진 망을 학습하는 방법을 알아볼 것이다. 우리는 미분이라는 개념을 알고 있어야 하며 합성곱의 미분을 알아야하며 편미분도 알아야한다. 또한, chain rule 이라는 연산을 이용할 것이다. 모르는 분이 있다면 꼭꼭 알아야하니 기본적인 미분이랑 편미분 등등을 학습하고 오시길 바란다. 우리는 일반적으로 예측 값과 실제값의 차이를 이용해 비용함수를 구하고 그 비용함수에 경사하강법을 이용하여 적절한 w,b의 값을 구했다. global min 을 구했다. 따라서 우리가 nn에서 또한 같은 방식을 적용하여 답을 구해보려고 한다. 하지만?! 이게 깊어진 만큼 계산이 엄청 복잡해졌다. 중간에 활성화 함수인 시그모이드 함수도 끼고 정말 복잡해졌다. 예를 들어 x1 이라는 input이 예측된 y 값에 어떤 영향을..