일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- BOJ
- 4948
- 9020
- N-Queen
- REST
- 가상환경
- 기계학습
- pyenv
- 티스토리챌린지
- 15649
- 재귀
- 1101
- 개발환경
- 그리디 알고리즘
- 실버
- 손실함수
- 1002
- end to end
- 파이싼
- streamlit
- 밑바닥부터 시작하는 딥러닝
- REST API
- 백준
- 경사하강법
- 백트래킹
- 오블완
- 파이썬
- 신경망 학습
- Python
- n과 m
- Today
- Total
목록AI&ML/밑바닥부터 시작하는 딥러닝 (6)
파이톨치

def softmax(x): if x.ndim == 2: x = x.T x = x - np.max(x, axis=0) y = np.exp(x) / np.sum(np.exp(x), axis=0) return y.T x = x - np.max(x) # 오버플로 대책 return np.exp(x) / np.sum(np.exp(x)) def cross_entropy_error(y, t): if y.ndim == 1: t = t.reshape(1, t.size) y = y.reshape(1, y.size) # 훈련 데이터가 원-핫 벡터라면 정답 레이블의 인덱스로 반환 if t.size == y.size: t = t.argmax(axis=1) batch_size = y.shape[0] return -np.sum(n..

솔직히 어렵긴 합니다 저도 처음 이 내용을 배울 때 하나도 이해가 가지 않았습니다. 그래서 누군가에게 이를 이해하라고 말할 자신이 없습니다. 오차역전파법은 고등학생 때, 처음 미분을 배웠을 때와 비슷한 느낌이었습니다. 하지만, 미분과 마찬가지로 보다보니 결국은 어떤 내용인지 이해가 갔습니다. 이것도 마찬가지입니다. 처음에는 이해가 가지 않을 수도 있습니다. 하지만 천천히 반복적으로 보다보면 결국에는 이해가 갈 것입니다. 때문에 당장에 이해가 안되도 괜찮다는 말을 하고 시작하겠습니다. 오차역전파법이 어렵다고 생각하는 이유는 우리가 지금까지 사용해보지 않는 계산체계를 사용하기 때문이라고 생각합니다. 여기서는 주로 계산 그래프를 사용하고, 이를 미분하는 형태로 내용을 전개합니다. 계산 그래프를 처음 접하는 상..

포기하지 말시길... 제 생각에는 이번 장부터는 내용이 어려워지고 분량도 많이집니다. 관련된 지식을 이미 알고있는 사람이라면 어렵지 않게 이해하겠지만 처음배우는 입장에서는 이번 장부터 난이도가 급격하게 올라갈 수 있습니다. 저 또한 이번 장부터는 잘 설명할 수 있을지 모르겠습니다. 이번 장에서 배우는 내용은 "학습" 이라는 것입니다. 앞에서도 말했다 싶이 학습이라는 것은 데이터의 패턴을 익히는 과정입니다. 우리가 이번에 할 내용은 어떻게 신경망은 데이터의 패턴을 익히는가 입니다. 학습을 하지 않는다면, 처음에 우리가 퍼셉트론을 만들 때 했던 것처럼 가중치를 하나하나 상황에 맞게 바꾸어 주어야 합니다. 하지만 이렇게 하는 경우에 데이터가 수백만개가 된다면, 우리는 평생을 가중치만 수정하다가 인생이 끝날지도..

간단한 신경망 구현하기 이렇게 생긴 신경망을 구현해봅시다. 우선 가중치는 학습을 해야하지만 우리는 아직 학습을 모른다고 가정하고 하기에 임의의 가중치를 부여하겠습니다. 위의 모양에서 입력이 2개 출력이 2개가 나오는 구조라 아마 2가지 중 한가지로 분류하는 신경망일 것입니다. 일단 은닉층에서 사용할 활성함수는 시그모이드 함수를 사용할 것 입니다. def sigmoid(x): return 1 / (1+np.exp(-x)) 출력층은 항등함수를 사용할 것인데, 사실 함수를 만들 필요는 없습니다. y = x 함수니까요. 아까 말했듯이, 가중치를 학습하는 방법을 모르니 임의의 가중치를 부여해줄 것 입니다. 이를 함수로 만들면 다음과 같습니다. def init_network(): network = {} networ..

여기부터는 천천히 기억을 더듬어서 작년에 처음 기계학습에 대해 배울 때 여기부터 어려웠던 것 같습니다. 내용이 어려운 것도 있지만 여기부터 알아야 할 내용이 많아져서 그런 것이라고 생각합니다. 때문에 여기부터는 이것을 읽는 사람이 최대한 이해할 수 있도록 노력해야겠습니다. 우선은 간단한 복습을 해야 이 이후의 내용들을 이해하는데 무리가 없을 것 같습니다. 신경망은 다음과 같이 입력층, 은닉층, 출력층이 있습니다. 입력층은 지금 단계에서는 크게 신경쓰지 않아도 되지만 은닉층과 출력층은 어떻게 설계하는지에 따라서 완전히 다른 결과가 나오기도 합니다. (물론 입력도 어떻게 넣느냐에 따라 하나의 논문이 나오기도 한 것 같습니다.) 신경망은 다수의 노드들의 층을 어려개 만들어 놓은 것입니다만, 한가지 퍼셉트론과 ..

시작하기 전에 책을 시작하기 전에 딥러닝이란 무엇이고, 왜 배워야 하는지에 대한 설득이 부족하다고 생각합니다. 저는 그래봐야 학부생이지만, 처음 딥러닝을 알기시작하시는 분들을 위해 조금이나마 이해를 돕기위해서 설명을 해보겠습니다. 우선 딥러닝이 무엇일까요? 한국어로는 심층 학습이라고 합니다만, 용어만 들어서 무엇인지 추측하기란 정말 어렵습니다. 근의 공식이라는 용어로 근의 공식을 알 수는 없는 것처럼 말이죠. 우선 딥러닝을 알기 전에 러닝이라는 단어에 초점을 맞춰봅시다. 러닝은 학습이라는 뜻을 가지고 있습니다. 기계가 학습을 한다는 것 입니다. 예를 들어서, (1,1), (2,2), (3,3)이라는 좌표가 주어졌을 때 다음에 올 좌표가 무엇일까요? 라는 문제가 있을 때 우리는 (4,4)가 다음에 올 좌표..