목록딥러닝 (4)
거의 알고리즘 일기장
CNN의 필요성 이론적으로는 ANN으로도 모든 함수를 근사할 수 있다고 알고있지만, 이미지 데이터에 직접 이용해보면 성능이 좋지 않다. 그 이유는 밑의 그림을 보면 이해가 빠를것이다. 사람이 보기에는 그냥 x와 기울어진 x이지만 컴퓨터에게는 전혀 다른 input이다. 그러므로 만약에 기울어지지 않은 x의 데이터만 학습한 모델은 오른쪽과 같이 기울어진 x는 판별하기 힘들것이다. 이처럼 기본적인 ANN은 변형된 데이터에 약하다. 사실 왼쪽과 오른쪽의 이미지의 특징은 비슷하다. 밑의 그림을 보면 알수 있다. 그래서 나온게 CNN이다. 사람처럼 이런 변형된 x라도 이러한 이미지의 특징을 뽑아 훈련시켜 판별할 수 있게끔 하는 신경망이다. CNN의 연산 과정 위의 그림이 정말 잘 설명해둔 그림이다. 왼쪽의 입력 이..
인공신경망이란? 생물학적 신경망을 모방해 만듬. 이 내용은 밑의 링크 참고ko.wikipedia.org/wiki/%EC%9D%B8%EA%B3%B5_%EC%8B%A0%EA%B2%BD%EB%A7%9D 인공 신경망 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 인공 신경망은 노드들의 그룹으로 연결되어 있으며 이들은 뇌의 방대한 뉴런의 네트워크과 유사하다. 위 그림에서 각 원모양의 노드는 인공 뉴런을 나타내고 � ko.wikipedia.org 요소 입력층, 은닉층, 출력층이 필요하며 은닉층이 2개 이상이면 심층 신경망으로 불림 활성화 함수 위의 수식을 보면 중간중간 시그마 기호가 있는걸 알수있는데 이 시그마는 활성화 함수를 의미한다. 활성화 함수가 필요한 이유는 값이 비선형성을 띄게 하기..
주어진 데이터를 잘 설명하는 직선 하나를 찾는 일! y = w * x + b 에서 들어오는 x, y 데이터에 잘 맞는 w, b의 값을 찾는것 이를 위해서는 두가지를 먼저 알고 가야한다. 손실함수, 경사하강법 손실함수 : 모델의 예측값과 실제 값과의 오차, 주로 MSE(평균 제곱오차 사용) 경사하강법 (gradient decent) : 수식을 보면 알기 쉬운데 주어진 w에서 기울기를 구하고 그 기울기에 대해서 w를 조금씩 업데이트하면서 손실함수의 극솟값을 구하는 방식이다. (수식 : W(t+1) = W(t) - gradient(기울기) X learning rate(학습률)) (왜 w로 미분해서 그 값이 0이 되는 지점을 찾지 않고 경사하강법을 이용하냐면 데이터가 많아지면 많아질수록 연산량이 매우매우 늘어나..
www.youtube.com/watch?v=z8lK69BQ0VE&t=556s 이 영상과 케라스로 짠 코드를 보고 pytorch로 바꿔 구현해보았다. epoch : 100 batch size : 32 model : class Net(nn.Module): def __init__(self): # 가중치 초기화 super(Net, self).__init__() # sequential을 사용하면 편하게 모델 만들기 가능 self.layer1 = nn.Sequential( nn.Conv2d(1, 32, 3, padding=1), nn.ReLU(inplace=True), nn.MaxPool2d(2), nn.Conv2d(32, 64, 3, padding=1), nn.ReLU(inplace=True), nn.MaxPoo..