목록AI/Deep Learning (10)
데이터 꿈나무

w = 0.01 * np.random.randn(Din, Dout) 위 코드는 zero-mean, unit-std를 갖는 가우시안 분포를 따르는 값들을 0.01 scaling 시켜주어 (std=0.01 로 만듦) 초기화시켜준 것이다. 이러한 방식은 작은 network에서는 잘 동작하지만 layer가 많아질 수록(모델이 깊어질수록) 문제가 발생하게 된다. 0.01은 제곱한 것이 분산으로 들어가게 된다. (= 루트 0.0001) W를 0.01로 두면, 작은 값이 곱해지고 또 곱해져서 std가 점점 작아지는 현상을 볼 수 있다. (점점 0에 가까워진다.) 그렇기 때문에 모델 업데이트가 되지 않는다. 그렇다고 위 코드의 0.05처럼 W를 너무 크게 주면, -1과 1에만 몰려있게 되는 현상을 확인할 수 있다. 따..

1. Mirriring 2. Random Cropping 3. Color Shifting 4. Ensembling (앙상블) CNN과 RNN 결합도 가능하다. CNN에서도 서로 다른 모델로 앙상블을 할 수 있다. 또한, 네트워크 구조 변경도 가능하다.

필터의 수에 따라서, 원하는 채널 수로 변경할 수 있다. 채널 정보를 요약할 때 유용하다. 채널 수를 갑자기 크게 줄어드는 것은 문제가 될 수 있다. (정보 손실) 따라서, 요약 후에 다시 늘리는 방법도 존재한다.

마지막 부분(빨간색) 에 '1960 units'를 하나의 벡터(row 벡터)로 핀 후에, Neural Network에 넣어준다. 그리고 이것은 softmax의 입력으로 들어가게 된다. 📌 Tip ! 모델이 깊어질 수록, 채널의 수는 증가하고, 요약된 이미지 크기(height, weight)는 줄어들게 하면 학습이 잘 이루어 진다. Neural Network example Max Pooling을 사용하는 이유는 필요 이상의 해상도 일 때, 필요하지 않은 해상도를 버리기 위해 사용한다. 필요하지 않은 해상도까지 사용하게 되면, 연산이 복잡해진다. 따라서, 연산량을 줄이고 그림의 크기를 줄이고자 사용한다.

입력과 출력(정답)이 '근사하다' 라는 정확한 수학적 척도가 필요하다. ➡️ Loss / Cost 성능이 좋은 layer의 깊이, 크기(뉴런 수)를 정하는 방법은 하이퍼파라미터를 조절해가면서 적당한 파라미터(w,b)를 찾아줘야 한다. 모델의 크기가 크면 표현력은 높아지지만, 연산량도 높아진다. 따라서, 정답을 찾아가는 과정이 어려워진다. 이상적으로, cost functions가 0이 되는 값을 찾아가는 것이 좋다. 📌 Gradient

Feed Forward Networks는 입력층, 은닉층, 출력층으로 구선된 신경망 모델이다. 각 층의 뉴런은 활성화 함수를 통해 입력 신호를 처리하고, 가중치와 편향(b)를 학습하여 입력과 출력 사이의 복잡한 비선형 관계를 모델링 한다. (+입력 데이터가 출력층까지 진행되는 동안 중간 과정에서 다양한 특징을 추출할 수 있다.) 📌 퍼셉트론 bias는 추정된 파라미터가 실제 파라미터와 다른 정도를 나타내는 스칼라 값이다. 모델의 파라미터 (세타)를 추정했을 때, bias 값이 크다면 추정된 파라미터가 실제 파라미터와는 상당히 멀리 떨어져 있음을 나타낸다. bias 값이 작은 경우가 실제 파라미터 값과 비슷할 것이고, 대체적으로 bias=0인 경우가 좋다.

행렬의 합은 두 개의 차원이 같아야 계산이 가능하다. 행렬곱은 내적의 모음이다.

각 원소들은 모두 실수로 이루어져 있다. 벡터를 transpose하면 column은 row 벡터가 되고, row는 column 벡터가 된다.
📌 Bias란 무엇인가? Bias는 추정된 파라미터가 실제 파라미터와 다른 정도를 나타내는 스칼라 값입니다. 모델의 파라미터 θ를 추정했을 때, bias 값이 크다면, 추정된 파라미터가 실제 파라미터와는 상당히 멀리 떨어져 있음을 나타냅니다. 더보기 ✅ θ란 무엇인가? 머신러닝, 딥러닝에서는 데이터셋에 맞게 모델의 파라미터 θ를 훈련합니다.이 값을 변형해서 주어진 모집단의 데이터를 가장 잘 설명하는 데이터를 찾습니다.하나의 모델에는 아주 많은 파라미터가 있기 때문에, 그냥 통틀어서 파라미터들을 θ라고 합니다. 그렇다면 bias값이 작은 경우가 실제 파라미터와 값이 비슷할 것이고 대체적으로 bias값이 0인 경우가 좋습니다.
신경망 구조를 쉽게 이해하려면 벡터연산, 벡터의 "내적" 연산을 기억하면 된다. 벡터는 숫자는 숫자인데, 차원을 갖고 있어서 여러 개의 숫자들의 조합을 통해 결정되는 값이다. 예를 들어, 2차원 벡터는 숫자 두 개가 필요하고 2차원 평면 위에 점으로(또는 화살표로) 나타낼 수 있다. 마찬가지로 3차원 벡터는 숫자 세 개가 필요하고 3차원 공간 위에서 점으로 나타낼 수 있다. 1차원 벡터의 경우, 편의상 "스칼라"라고 한다. 각각 같은 차원의 벡터일 경우 사칙 연산을 할 수 있는데, 그중에 가장 널리 쓰이는 것이 "내적" 연산이다. 두 개의 다른 벡터에 대해서 각각의 같은 차원 값끼리 곱한 값을 모두 더하면 하나의 스칼라 값으로 도출된다. 예를 들어, A = (a1, a2, a3, a4, a5 ...)이고..