Data 30

그레디언트와 경사하강법

밑바닥부터 시작하는 딥러닝을 교재로 한 딥러닝 I 강의 내용을 정리하고자 작성한 포스팅입니다. ▶ 모델 학습의 목표: 손실함수를 최소로 만드는 것이 목표로 정확도가 높은 모델을 만들기 위한 학습이 이뤄져야 한다. ▷ 손실함수를 최소로 만드는 것의 의미 손실함수를 최소로 만든다는 말은 손실함수의 변수(가중치와 편향)가 1차원일 때는 다음 그래프와 같이 기울기가 0인 지점에서 가장 최소값 _ 는 의미이다. 그러나 일반적으로 모델에서 변수를 하나만을 가지는 경우는 없다. 즉 적어도 2개의 변수, 2차원에서 손실함수의 최솟값을 찾아야한다. 손실함수가 2개의변수를 가진다고 할 때 최솟값은 다음과 같이 찾을 수 있다. 여기서 z는 접평면의 방정식으로 3차원에서 손실함수의 최솟값은 이 방정식을 상수 k로 만드는, 즉..

심층 신경망 성능 향상시키기(3)/하이퍼파라미터 튜닝

부스트 코스의 딥러닝 2단계: 심층 신경망 성능 향상시키기 강의를 수강하며 내용정리한 포스팅입니다. ▶ 하이퍼파라미터 신경망을 학습할때 튜닝해야하는 하이퍼파라미터는 학습률, 모멘텀, 아담 최적화알고리즘의 ε과 β1, β2, 층 수, 은닉 유닛 숫자, 학습률 감쇠(learning rate decay), 미니 배치 사이즈 등 무척 많다. 직관에 따라 하이퍼파라미터 튜닝의 중요도를 순서대로 정리하면 다음과 같다. 1순위: 학습률 2순위: 모멘텀, 미니배치 사이즈, 은닉 유닛 수 3순위: 층 수, 학습률 감쇠 (아담 알고리즘의 ε은 10^-8, β1은 0.9, β2는 0.999를 항상 사용하지만 원한다면 튜닝해도 좋다.) ▶ 딥러닝에서의 하이퍼파라미터 튜닝 하이퍼파라미터의 수가 적을 때는 그리드 서치를 통해 최..

RNN과 게이팅

파이토치로 배우는 자연어처리 책을 참고하여 작성했습니다. ▶ 엘만 RNN의 문제점 엘만 RNN은 그림1과 같이 이전 셀에서의 은닉벡터와 현재 셀의 입력 벡터를 사용해 타임스텝마다 은닉상태 벡터를 계산하는 과정을 가진다. 따라서 RNN은 이전 정보를 현재에도 반영함으로써 자연어처리에서 시퀀스 데이터인 언어를 이해하는데 유용하게 사용될 수 있다. 그러나 RNN은 다음과 같은 문제점들을 가진다. 1. 현재 타임스텝에서 멀리 떨어져 있는 정보를 유지하기 어렵다. : RNN에선 시퀀스에 있는 모든 입력벡터를 모델에 넣는다. 즉 모델 학습에 유익한 정보이든 아니든 간에 무조건 다 입력으로 넣고본다. 이런 경우 모델이 주어진 task를 수행하는데 쓸모없는 데이터들의 정보까지 반영되기 때문에 비효율적인 학습이 될 수 ..

심층 신경망 성능 향상시키기(2)/ 편향, 분산

부스트 코스의 딥러닝 2단계: 심층 신경망 성능 향상시키기 강의를 수강하며 내용정리한 포스팅입니다. ▶ 편향(bias)/ 분산(variance) train set와 dev set의 성능에 대해 high bias라고 하면 훈련데이터 셋에 과소적합되어 훈련 데이터에서 조차도 모델의 성능이 나오지 않는다고 이해할 수 있다. 반면 high variance를 가진다고 하면 훈련 데이터에 과적합되어 훈련데이터에선 좋은 성능을 보이지만 개발 데이터 셋에선 좋은 성능을 보이지 않는다고 이해할 수 있다. 따라서 좋은 모델 성능을 내기 위해선 bias와 variance 두 요소를 모두 낮추는 것이 최상의 방법이나, 두 요소를 동시에 낮출 수 없는 상황이라면 감소폭이 더 큰 하나의 요소만이라도 낮추는 것이 성능에 긍정적인 ..

심층 신경망 성능 향상시키기(1) / Train, Dev, Test sets

부스트 코스의 딥러닝 2단계: 심층 신경망 성능 향상시키기 강의를 수강하며 내용정리한 포스팅입니다. ▶ Train/ Dev/ Test sets의 역할과 데이터 분할 train, dev, test 셋을 정하는 것은 알고리즘의 편향과 분산을 더 효율적으로 측정할 수 있도록 하기 때문에 모델의 성능을 높이기 위한 과정을 효율적으로 만든다. 즉 세 세트를 잘 설정하는 것만으로 모델의 성능향상에 긍정적으로 기여할 수 있다. 일반적으로 모델링할 때, train 데이터로 모델을 학습시키고 dev 데이터 셋으로 다양한 모델 중 어떤 모델의 성능이 좋은지 테스트한다. dev 데이터 셋을 통해 나온 최적의 학습성능을 가진 모델로 test 데이터 셋에서 모델의 비편향을 추정하고 모델이 얼마나 잘 작동하는지 확인한다. 머신러..

[Pytorch] 임베딩 (2) / GloVe임베딩 + CNN 을 활용한 뉴스 카테고리 분류기 구현

파이토치로 배우는 자연어처리 책을 참고하여 작성했습니다. 이전 포스팅에선 임베딩의 개념에 대해서 정리해보았다. 이번 포스팅에선 사전 훈련된 임베딩 GloVe와 CNN모델을 활용하여 뉴스 카테고리를 분류하는 모델을 구축하는 코드를 리뷰해보고자 한다. 코드리뷰는 참고한 책에서 추가 보충 설명을 달아놓고 이해를 높이기 위함이므로 전체 코드를 보고 싶다면 코드 원본 출처에서 보도록 하자. ▶ 분석 개요 분석에 사용할 데이터는 AG 뉴스 데이터 셋으로 2005년에 수집한 뉴스 기사 모음이다. 해당 분석에서는 네가지 범주로 균등하게 분할된 뉴스 기사 12만개에서 뉴스 제목을 대상으로 카테고리를 예측하는 분류모델을 만들었다. ▶ 분석 과정 분석과정은 다음 그림과 같다. - 우선 텍스트를 정수로 매핑하기 위해 voca..

임베딩 (1) / 임베딩 개념

파이토치로 배우는 자연어처리 책을 참고하여 작성했습니다. 참고 강의- 단어 임베딩 ▶ 임베딩(embedding)의 정의와 필요성 컴퓨터가 텍스트를 인식 처리할 수 있도록 단어나 문장을 벡터로 바꾼 것 혹은 그 과정을 임베딩이라고 한다. 임베딩 방식에는 전통적으로 사용해오던 원핫벡터, 카운트 기반의 TF-idf방식 등이 있다. 카운트 기반의 방식은 중요 내용이나 의미가 벡터의 여러차원에 표현되기 때문에 분산적 표현이라고도 부른다. 분산표현은 문서에 존재하는 단어들 보다 낮은 차원의 밀집벡터로 나타내지만 그럼에도 여러 차원에 비슷한 정보를 중복해 인코딩한 벡터를 만들기 때문에 통계적 장점을 공유하지 못한다. 또한 카운트 기반 표현은 차원이 수백만개로 늘어날 경우 상당히 고차원의 입력값 생성될 수 있는데, 이..

엔트로피와 크로스엔트로피

참고강의1 - 엔트로피 참고강의2 - 크로스 엔트로피 ▶ 엔트로피란 entropy 는 무질서도를 의미한다. 따라서 엔트로피 값이 클수록 데이터가 혼재되어있어 분류가 잘 되어있지 않은 상태이고 그 값이 작을 수록 데이터가 잘 분리되어있다는 뜻이다. 즉 불확실성의 정도를 나타내는 수치라고 볼 수 있다. ▶엔트로피 공식 어떤 특정 현상이 발생할 확률을 p라고 할 때 엔트로피의 공식은 다음과 같다. 특정 사건이 발생할 확률 p에 로그를 취해준 p를 곱한 후 모두 더한 값에 -를 취해준다. ▷예제 해당 공식의 예제를 들어보자. 동전을 던졌을 때 앞이 나올지 뒤가 나올지 예측하는 문제가 있다고 해보자. 앞이 나올 사건과 뒤가 나올 사건에 대해 예측한 확률 분포값에 따라 각각의 엔트로피를 구해보자. 1) 앞이 나올 ..

CNN 추가 개념/ 풀링, 배치정규화, NiN 연결, 잔차연결

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의- BatchNormalization 참고 자료- 1x1 convolution / 잔차연결 CNN의 추가 개념에 대해서 간단하게 정리해보고자한다. CNN에 대한 개념과 기본설명은 다음 포스팅을 참고하자. https://westshine-data-analysis.tistory.com/73?category=873079 자연어 처리를 위한 피드포워드 신경망(2)/ 합성곱 신경망, 파이토치 구현 파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 참고 강의 ▶ 합성곱 신경망이란 합성곱 신경망은 공간상의 부분 구조를 감지하는 데 적합하기 때문에 이미지 처리에서 많이 사 westshine-data-analysis.tistory.com ▶ 풀..

[Pytorch] CNN을 활용한 성씨 데이터 분류기 구현

파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. 코드 출처 본 포스팅은 파이토치로 배우는 자연어 처리 책을 공부하며 따라 작성해본 코드 중에서 좀 더 자세한 설명이 필요하거나 코드에 대해 이해한 부분을 정리해보고자 작성하였다. ▶ 분석 개요 이번 포스팅에서 다뤄볼 데이터셋은 18개 국적의 성씨 10000개를 모은 성씨 데이터 셋으로 데이터 불균형 등의 문제등이 해결되어 이미 전처리가 완료된 데이터를 사용한다. 모델은 다층 퍼셉트론과 CNN을 사용하는데 본 포스팅에선 CNN을 사용한 예제를 풀어보고자 한다. 모델링의 대략적인 진행 과정은 다음과 같다. 토큰들을 정수로 매핑하기 위한 어휘사전을 구축하고 정수로 매핑된 토큰들을 원핫벡터 행렬로 수치화한다. CNN 모델을 구축한 후 학습 및 검증과정을..