분류 전체보기 53

[밑바닥부터 시작하는 딥러닝]_optimizer(모멘텀, AdaGrad, RMSProp, Adam)

신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것입니다. 이는 곧 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 최적화(optimizer)라고 합니다. 하지만 신경망 최적화는 어려운 문제입니다. 매개변수 공간은 매우 넓고 복잡해서 최적의 솔루션은 쉽게 찾지 못하기 때문입니다. 그래서 순식간에 최솟값을 구하는 방법은 없습니다. 게다가 심층 신경망에서는 매개변수의 수가 엄청나게 많아져서 사태는 더 어려워집니다. 앞으로 다룰 것은 이러한 어려운 최적화 방법론에 대해서 다루고자 합니다. 최적화 방법론(optimizer) : 모멘텀 모멘텀은 '운동량'을 뜻하는 단어로 물리와 관계가 있는 개념입니다. W는 갱신할 가중치 매개변수, n은 학습률, n옆에 있는 것은 W에 대한 손실함수의 ..

카테고리 없음 2021.11.28

역전파를 통한 학습 구현(밑바닥부터시작하는딥러닝)

신경망의 학습의 전체그림 전제 신경망에는 적응 가능한 가중치와 편향이 있고, 이 가중치와 편향을 훈련 데이터에 적응하도록 조정하는 과정을 '학습'이라 합니다. 신경망 학습은 다음과 같이 4단계로 수행합니다. 1단계 = 미니배치 : 훈련 데이터 중 일부를 무작위로 가져옵니다. 이렇게 선별한 데이터를 미니배치라 하며, 그 미니배치의 손실함수 값을 가장 작게 하는 방향을 제시합니다. 2단계 = 기울기 산출 : 미니배치의 손실 함수 값을 줄이기 위해 각 가중치 매개변수의 기울기를 구합니다. 기울기는 손실 함수의 값을 가장 작게하는 방향을 제시합니다. 3단계 = 매개변수 갱신 : 가중치 매개변수를 기울기 방향으로 아주 조금 갱신합니다. 4단계 = 반복 : 1~3단계를 반복합니다. 학습과정 중 대소관계를 유지하면서..

카테고리 없음 2021.11.18

Softmax-with-loss층 역전파(밑바닥부터시작하는딥러닝)

소프트맥스층과 크로스엔트로피층은 두개를 합성하여, 도합수를 구하는게 간단하다 보통은 각각의 도함수가 덜 복잡하지만, 합성한 후의 도합수가 간단. 그래서 두층을 엮어서 역전파를 생각 해야합니다. 이 두개의 층을 softmax-with-loss층이라고 부를 것입니다. 위의 수식을 통한 과정을 통해 오차역전파를 진행합니다. 소프트맥스 함수의 손실 함수로 교차 엔트로피 오차를 사용하니 역전파가 (y1 - t1, y2 - t2, y3 - t3)로 말끔하게 떨어집니다. 또한, 회귀 출력층에서 사용하는 항등 함수의 손실 함수로 '오차제곱합'을 이용하는 이유도 이와 같습니다. 예를들면 정답 레이블이 (0, 1, 0)이 있고, Softmax 계층이 (0.3, 0.2, 0.5)를 출력 했다고 보면, 정답 확률이 20%로 ..

카테고리 없음 2021.11.18

밑바닥부터 시작하는 딥러닝(오차역전파법, affine층 역전파, simoid, Relu)

오차역전파 수치미분 vs 연쇄법칙 + 미분공식(오차 역전파 해당) 수치미분은 단순하고 구현하기 쉽지만, 계산 시간이 오래 걸린다는 것이 단점입니다. 그래서 가중치 매개변수의 기울기를 효율적으로 계산하는 오차역전파에 대해 배워보고자 합니다. 순전파를 통해 도출된 오차를 순전파의 역방향으로 가면서 오차를 줄일 수 있는 매개변수를 찾아가며 갱신하는 방법 실제값과 예측값의 거리(차이) = 손실함수의 값을 통해, 역으로 편미분을 통해 손실이 적어지는 최적의 매개변수를 구하는 것 알고리즘의 이해 1. 학습할 신경망을 구성/선택 2. 가중치 랜덤 초기화 3. 순전파를 통해 출력층에 도달, 출력값 확인 4. 비용함수를 계산 5. 비용함수를 최소화하는 가중치를 찾는다 6. 역전파를 통해 입력층으로 돌아오면서 비용함수를 ..

딥러닝 2021.11.11

Get과 POST의 차이점 정리

GET과 POST의 차이를 간단하게 말하면 GET의 경우 데이터를 읽거나, 검색하는 경우 즉 조회 요청하는 경우에 국한되어 사용됩니다. POST의 경우는 리소스(데이터 등)을 서버에 삽입하거나, 갱신하기 위해 사용됩니다. https://mangkyu.tistory.com/17 [Web] GET과 POST의 비교 및 차이 사용자가 어떤 홈페이지로 이동하기 위해서 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 페이지로 이동합니다. 사용자는 단순히 URL(Uniform Resource Locator)을 입력하였을 뿐이지만 서버 mangkyu.tistory.com https://velog.io/@songyouhyun/Get%EA%B3%BC-Post%EC%9D%98-%EC%B0%A8%EC%9D%B4%E..

카테고리 없음 2021.11.08

밑바닥부터 시작하는 딥러닝 (신경망 구현, 손실함수, 엔트로피)

위의 사진은 3층 신경망의 신호전달 과정입니다. 코드로 풀면 아래와 같습니다. a1 = np.dot(x, W1) + b1 # affine z1 = sigmoid(a1) # simoid a2 = np.dot(z1, W2) + b2 affine z2 = sigmoid(a2) # simoid a3 = np.dot(z2, W3) + b3 affine y = softmax(a3) # softmax MNIST의 사진 데이터의 경우 데이터가 (28X28)의 데이터이므로 입력층의 뉴런이 784개로 형성됩니다. 은닉층은 총 2개로 첫번째 은닉층의 뉴런은 50개, 두번째 은닉층의 뉴런은 100개로 임의로 배치했습니다. 파라미터가 위의 사진처럼 나타나는 것을 알 수 있습니다. 사진을 넣기전, 사진데이터(28X28)을 Fla..

카테고리 없음 2021.10.28

밑바닥부터 시작하는 딥러닝(활성화함수, 인공신경망, MNIST)

활성화함수 말그대로, 입력 신호의 총합이 활성화를 일으키는지를 정하는 역할을 합니다. 즉, 입력된 데이터의 가중 합을 출력 신호로 변환하는 함수를 뜻합니다. 위는 활성화 함수의 처리과정을 나타내며, 가중치 신호를 조합한 결과가 a라는 노드가 되고, 활성화함수 h()를 통과하여 y라는 노드로 변환되는 과정입니다. 활성화함수의 종류 계단함수 계단함수는 입력신호가 0이하인 경우 전부 0으로 출력하며, 0을 초과할 때 1로 출력하는 함수를 말합니다. 시그모이드 함수 h(x)식에 값을 대입했을 때, 아래와 같은 그래프가 나타납니다. 계단함수를 사용하지않고, 시그모이드를 사용하는 이유는 기계가 학습할 때 미분을 통해 학습을 하는데 계단함수의 경우 0을 제외하고 미분계수가 0이므로 신경망에서는 계단함수를 사용하지 않..

딥러닝 2021.10.21

경사하강법과 역전파 알고리즘

Back - propagation (BP) 오차 역전파(Back-propagation)은 Backwards Propagation of errors의 줄임말입니다. 신경망에 존재하는 가중치들을 어떻게 업데이트를 해야할지 결정하기 위해 epoch/batch마다 출력층 방향(역방향)으로 미분값을 계산하고 가중치를 업데이트 하여 신경망을 학습하는 알고리즘입니다. 알고리즘의 이해 학습할 신경망을 구성/선택 가중치 랜덤 초기화 순전파를 통해 출력층에 도달 및 출력값 확인 비용함수 계산(cost 확인) 해당 가중치에 대한 편미분을 진행하고, 최소화 하는 가중치를 찾는다(기울기를 낮은쪽으로 이동) 역전파를 통해 입력층으로 돌아오면서 비용함수를 최소화하는 가중치들로 업데이트 한다. 어떤 정지기준 충족 혹은 비용함수 최소..

카테고리 없음 2021.09.27

퍼셉트론과 인공신경망

퍼셉트론(Perceptron)이란? 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 제안한 초기 형태의 인공 신경망입니다. 인공신경망을 이루는 가장 기본 단위이며 다수의 신호를 입력으로 받아 하나의 신호를 출력합니다. 여기서 신호는, 전류가 전선을 타고 전자가 이동하듯 퍼셉트론이 데이터와 가중치들이 연산의 흐름을 만들어 정보를 계속 전달하는 것과 같습니다. 퍼셉트론의 종류 단순 퍼셉트론 (은닉층이 없는 것) 가장 기본적인 구조의 퍼셉트론 계단함수를 활성화 함수를 사용하는 모델 다층 퍼셉트론 (은닉층이 있는 것) 퍼셉트론이 레이어가 겹쳐 있는 상태 매끈한 활성화 함수를 사용하는 네트워크(시그모이드) 논리게이트 단순논리회로 : 단층 퍼셉트론 AND def AND(x1, x2): w1, w2,..

딥러닝 2021.09.23

ORM ,SQLAlchemy

ORM Object-Relational Mapper의 약자로 코드와 데이터베이스를 연결해서 사용할 때 하나의 언어로 사용할 수 있도록 기능을 제공합니다 ORM은 코드와 데이터베이스의 중간에서 역할을 수행하며, 코드로 데이터베이스를 실행할 때 ORM이 데이터베이스가 수행되도록 번역을 수행합니다. 반대 상황도 같습니다. ORM 장단점 장점 직접 작성하는 SQL쿼리문은 없고, 더 높은 성능의 SQL 쿼리문들이 작성될 수 있습니다 주로 사용하는 언어를 통해 사용이 가능합니다 데이터베이스 시스템이 분리 되어있기 때문에 다양한 데이터베이스 서비스를 사용할 수 있습니다 단점 데이터베이스와 바로 연결하는 것보다 초기설정이 많고, 복잡해질 가능성이 있습니다 내부 작동에 대한 이해가 부족한 경우 문제 발생 시 어려움을 겪..

카테고리 없음 2021.09.01