2020/10/27 - [Study/인공지능] - 심층신경망 심층신경망 # coding: utf-8 import sys, os sys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정 import numpy as np from collections import OrderedDict from common.layers import * from comm.. 15051015.tistory.com 2020/10/26 - [Study/인공지능] - Overfitting [과적합] ( 인공지능 기초 #20 ) Parameter - 데이터를 통해 머신이 학습하는 값, 데이터가 많고 신경망 모델이 좋으면 최적의 값을 머신이 스스로 찾아냅니다. ex) 가중치, 편향, scaling..
# coding: utf-8 import sys, os sys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정 import numpy as np from collections import OrderedDict from common.layers import * from common.gradient import numerical_gradient class MultiLayerNet: """완전연결 다층 신경망 Parameters ---------- input_size : 입력 크기(MNIST의 경우엔 784) hidden_size_list : 각 은닉층의 뉴런 수를 담은 리스트(e.g. [100, 100, 100]) output_size : 출력 크기(MNIST의 경..
Overfitting : 학습데이터에 너무 최적화되어 weight 값이 잡히고, 이후 학습 데이터가 아닌 새로운 데이터에는 올바른 값을 내보내지 못하는 형상. 매개변수에 비해 상대적으로 훈련 데이터 수가 적을 때 일어난다. Regularization : 데이터에 너무 과적합되어 모델이 피팅되었으니, 이를 좀 덜 적합하게 하고, 이후 새로운 데이터에도 일반적으로 들어맞는 모델을 만들어야 한다. 이 때, 과적합이 아닌 일반성을 띄게 해주는 기법 파라미터 : 훈련 데이터의 정보를 담는 슬롯 정보의 슬롯이 많아서 필요없는 특수한 정보 (MNIST에서의 예는 어떤 사람의 특유의 필체 같은 것 , 사실은 숫자의 모양만 알면 됨) 같은것이 너무 많이 들어가 일반적인 데이터는 판단을 못하게 되는 것입니다. 사실 파라미..
2020/10/26 - [Study/인공지능] - Xavier/He 초기값 ( 인공지능 기초 # 18 ) 초기값은 은닉층에서 데이터의 분포가 너무 가운데로 쏠리거나 양 사이드에 치우치지 않게 함으로써 학습이 순조롭게 되도록 하는게 목표였습니다. 오늘 공부할 배치 노멀레이션은 초기값을 통해서 데이터의 분포를 컨트롤하는게 아닌, 아파인층과 활성화 층 사이에 데이터의 분포를 컨트롤해주는 층을 끼워 넣습니다. 머신이 데이터로부터 가장 효율적인 평균과 표준편차를 스스로 학습을 해 나가는 것입니다. 데이터가 n개가 주어져있고, 평균을 0으로 만드려면 평균을구해서 빼준다. u도 역시 배터이다. 첫번째 열의 평균을 구해서 첫번쨰 열에 일일이 다 뺴주고 첫번째 열의 표준편차를 구해서 첫번째 열에 일일이 다 나눠주는 작업..
2020/10/25 - [분류 전체보기] - optimizer 종합 banch mark ( 인공지능 기초 # 17) 가중치의 초기값 설정 가중치를 평균이 0, 표준편차가 1인 정규분포로 초기화할때의 각 층의 활성화값 분포 입력층 -> 첫번째 입력층 으로갈때 10000개의 변수가 생김 (입력층 100, 은닉층 100 = 100*100 =10000) 그 변수를 표준변차가 1인 정규분포를 따라서 선택을 하겠다는 뜻 아래 그래프는 sigmoid 함수를 적용한 데이터 1-layer의 데이터를 activations에 담아두고 [z] 출력 값 z를 다시 2-layer의 입력값으로 사용하는데 또 표준정규분포에 따라서 선택함 반복 --> Vanishing Gradient Problem 이 일어나면, 학습이 거의 안이루어..
2020/10/22 - [Study/인공지능] - Optimizer: SGD ( 인공지능 기초 #13 ) 2020/10/23 - [Study/인공지능] - Optimizer : Momentum, NAG ( 인공지능 기초 #14 ) 2020/10/24 - [Study/인공지능] - Optimizer : AdaGrad, RMSprop ( 인공지능 기초 # 15 ) 2020/10/25 - [Study/인공지능] - Optimizer : Adam ( 인공지능 기초 # 16 ) 경사하강법 : 가장 가파른곳으로 가다가 최소점이라고 생각되는곳을 찾기를 바람 (문제점 : 가장 아래가 아닌 중간에 잠깐 다시 올라가는 구간이있으면 멈춰버림, 또는 안장점에서 멈춤) ↓ 관성을 생각하자 Momentum : 경사하강법에 관성 ..
2020/10/24 - [Study/인공지능] - Optimizer : AdaGrad, RMSprop ( 인공지능 기초 # 15 ) Momentum과 RMSProp 두가지 방식을 합쳐 놓은 옵티마이저 입니다. 따라서 복잡하지만, 현재 가장 많이 쓰이는 옵티마이저 입니다. 가중치 B1으로 Momentum을 변형하여 점화식 [직전의 속도값 고려 (관성고려)] 을 생각하고 가중치 B2로 AdaGrad를 변형하여 점화식 을 생각합니다. 베타1과 베타2는 일반적으로 0.9나 0.99와 같은 1에 굉장히 가까운 숫자로 둡니다. 이때문에 초기값이 0인것에 영향을 받아 0에 편향된다. 그래서 이를 보정작업을 실시합니다. m은 관성과 그레디언트를 내분한 것 매우 복잡하다.. 복잡하긴 한데, ./././ 각 장점을 섞어놓..
2020/10/23 - [Study/인공지능] - Optimizer : Momentum, NAG ( 인공지능 기초 #14 ) learning rate가 변수마다 스텝마다 바뀝니다. 처음 시작점부터 최소점까지는 멀기 때문에 성큼성큼가다가 (보폭을 크게) 시간이 지나면 점점 목적지에 다가가게 되니까 보폭을 작게 조정합니다. 큰 변화를 겪은 변수의 러닝레이트는 크게 작아지고, 작은 변화를 겪은 변수의 러닝레이트는 작게 작아집니다. ( 이유는 x 와 y가 있을때 x축으로 더 크게 이동했다면, y축은 아직 먼 가능성이 높고 x축은 목표에 가까워 졌을 가능성이 높아졌다고 보기 때문입니다. ) Hadamard product 라는 기호입니다. 연산은 아래와 같습니다 ( 각 행렬의 위치를 덧셈처럼 위치마다 곱한값이 결과..