✍️ STUDY/DeepLearning

이번에는 "정규화"에 대해 이야기 해보고자 한다. 정규화에 대해 이야기 해보기 전에 먼저 오버피팅부터 복습해보자! 오버피팅이란 학습오차가 일반화 오차에 비해 현격하게 낮아지는 현상, 즉 모델이 학습 데이터의 불필요한 특징들까지 학습을 하여 모델의 일반화 성능이 떨어지는 상황을 말한다. 우리는 오버피팅을 방지하기 위해 여러가지 방법을 배웠는데, 한가지만 말해보자면, 검증 데이터셋과 테스트 데이터셋을 도입하여 모델의 최적화 과정에서 발생할 수 있는 오버피팅 현상을 방지 할 수 있었다. 정규화를 통해서도 오버피팅을 방지할 수 있는데, 정규화에는 데이터 증강, 배치정규화 등 여러가지 방법이 존재한다. 정규화 오버피팅을 늦추고 모델이 학습 데이터로부터 적절한 특징을 학습하여 일반화 오차를 낮춰줄 수 있는 기법을 ..
바로 앞에서 심층신경망을 활용하여 이진 분류를 수행하는 방법에 대해 글을 올렸다. 이진분류를 위해서 우리는 심층신경망의 가장 마지막 계층 이후에 시그모이드 활성 함수를 넣어주어 확률값이 반환되도록 구현하였다. >하지만 우리가 분류하고자 하는 클래스가 2개가 아닌 여러 개라면 어떻게 할까?28×28 크기의 픽셀들로 이루어져 있기 때문에 이 2차원 행렬을 1차원 벡터로 flatten할 경우, 784 크기의 벡터가 될 것이다. #MNIST 샘플의 각 픽셀은 0에서 255까지 숫자로 이루어짐. 따라서 각 픽셀을 255로 나눠주면 정규화 가능 x=train.data.float() / 255 #정규화 y=train.targets #view는 텐서의 크기를 변형 ( 단 데이터의 개수는 유지하되 size만 변경 -> ..
이번 글에서는 심층신경망을 활용한 분류 문제를 해결하는 방법에 대해서 이야기하고자 한다. 우리는 로지스틱 회귀를 통해 이진 분류문제를 해결하는 것을 배웠다. 마찬가지로 본격적인 분류 문제에 앞서, 특수 케이스인 이진 분류 문제를 심층신경망으로 해결하는 방법에 대해 공부하고자 한다. 로지스틱 회귀 로지스틱 회귀에 대해 간단하게 복습해보자! 로지스틱 회귀는 말만 '회귀'일뿐 사실상 분류 모델이라고 봐도 무방하다. 비선형 함수인 시그모이드를 활성화 함수로 사용하여 최종 출력값이 0~1사이의 값으로 나오게끔 구현되어 있으며 이렇게 나온 결과 값을 임계값을 기준으로 높으면 참, 낮으면 거짓이라고 분류한다. 손실함수로는 선형회귀와 다르게 BCE손실함수를 사용한다는 것을 유의해야 한다. >그렇다면 심층신경망을 활용하..
이제까지 우린 학습 데이터로부터 손실 값을 구해서 모델의 학습 여부를 판단했다. 이를 다른 표현으로 학습 오차라고 부른다. >그런데 만약 학습 데이터에 잘못된 레이블이 있다면.. 또는 의도치 않게 편향이 존재한다면 어떻게 될까?그렇다면 언더피팅은 무엇일까?f*를 근사하는 것이다. 하지만 그림에서 확인할 수 있듯이 이 데이터셋은 편향 또는 노이즈를 포함하고 있기도 하다. 이때, 왼쪽과 같이 선형 모델로 이 데이터를 모델링하고자 한다면 잘 동작하지 않을 것이다. 선형 모델은 이 데이터를 학습하기에 너무 수용능력이 작기때문이다. 따라서 이러한 경우에 언더피팅이 발생하게 된다. 또는 오른쪽 그림과 같이 너무 복잡한 형태의 함수로 근사할 수도 있을 것이다. 하지만 이 경우에는 아마 지나친 일반화가 이루어진것이라고..
이번 글에서는 "최적화"에 대해 공부한 내용을 회고 하고자한다. 최적화란? 최적화를 말하기 전 먼저 "하이퍼 파라미터"에 대해 이야기 해보자! 하이퍼 파리미터는 모델의 성능에 크게 영향을 끼치지만 자동으로 최적화되지 않는 파라미터를 의미한다. 즉, 사용자가 직접 값들을 설정해야 하는 중요한 변수를 의미한다. 학습률, 미니배치 크기, 심층신경망의 깊이, 너비등이 하이퍼파라미터에 속한다. 우리는 모델의 성능을 끌어올리기 위해서는 하이퍼파라미터의 잘 설정해주는 것이 매우 중요한데, 경사하강법과 같이 자동으로 자동으로 찾아주는 방법이 없기 때문에 사용자가 직접 실험을 통해 성능을 지켜보면서 값을 튜닝해야 한다. 적응형 학습률 학습률은 모델을 학습하는데 매우 중요한 파라미터, 하이퍼 파라미터라고 할 수 있다. 학..
이미지, 음성, 텍스트등과 같은 데이터들은 비선형 데이터일 뿐만 아니라 높은 차원의 데이터이다. 선형 모델로 이러한 데이터들을 다루는 데에는 한계가 존재 이러한 문제들을 심층신경망이 해결할 수 있다. 심층신경망? 비선형 데이터를 풀기 위해서 계층을 깊게 쌓아올린 것이다. 이때 서로 다른 선형 계층을 깊게 쌓아 구성할 수 있다. 이때, 여러개의 선형 계층을 쌓아올려봤자 결과로 또 다른 선형계층이 나올 뿐..! 따라서 이러한 방법으로는 비선형 문제를 풀 수 없다. >그렇다면 어떻게 해결할 수 있을까?심층신경망 학습은 어떻게 할까?심층신경망이 너무 깊어지면?y=ReLU(x)=max(0,x) 음수 구간에서는 전부 0의 값을 가지고, 양수 구간에서는 전부 기울기가 1인 형태가 된다. 하지만, 음수 구간에서 전부 ..
세상에는 많은 종류의 데이터가 있다. 우리는 데이터를 모아서 알수 없는 함수 f* 를 근사하고 싶어 한다. > 그렇다면 어떤 모델로 그 함수를 근사할 수 있을까?W와 b를 가중치 파라미터로 갖고 있다는 말이다. 모델의 가중치 파라미터들의 집합을 이제 θ라고 표현하도록 하겠다. θ ={ W ,b } 이름이 선형계층이듯이 선형관계 데이터를 주로 나타낼 때 사용이 된다. 예를 들어 키와 몸무게를 생각해보자. 보통은 키가 크면 몸무게가 많이 나간다. 또는 공부량과 성적간의 관계를 생각해보면 마찬가지다. 이러한 관계를 "선형 관계"라고 말한다. 선형회귀 선형적 관계를 가진 데이터들을 예측하는 문제를 선형회귀라고 부른다. 아래 사진을 보자 파란색 점이 실제 데이터를 의미하며 빨간 점선은 이러한 파란색 점들의 선형 ..
Ju_pyter
'✍️ STUDY/DeepLearning' 카테고리의 글 목록