본문 바로가기
반응형

전체 글257

[밑시딥2] CHAPTER 5 순환 신경망(RNN) 지금까지 살펴본 신경망은 feed forward 신경망이었다. 흐름이 단방향인 신경망을 의미한다. 이러한 feed forward신경망은 구성이 단순하여 구조를 이해하기 쉽고, 그래서 많은 문제에 응용할 수 있지만 시계열 데이터를 잘 다루지 못한다는 단점이 있다. 더 정확히 feed forward 신경망에서는 시계열 데이터의 패턴을 충분히 학습할 수 없다. 따라서 순환 신경망(Recurrent Neural Network, RNN)이 등장하게 된다. 5.1 확률과 언어 모델 RNN 이야기를 시작하기 전, word2vec을 복습해보자. 5.1.1 word2vec을 확률 관점에서 바라보다 word2vec의 CBOW모델을 복습해보자. 그리고 맥락이 주어졌을 때 타깃이 해당 중심 단어가 될 확률은 아래와 같다. 지.. 2023. 7. 21.
[밑시딥2] CHAPTER 3 word2vec 3.1 추론 기반 기법과 신경망 3.1.1 통계 기반 기법의 문제점 2장에서 다뤘던 통계 기반 기법은 대규모 말뭉치를 다룰 때 문제가 발생한다. 현업에서 다루는 말뭉치의 어휘 수는 어마어마하다. 영어의 어휘 수는 100만이 넘는데, 이를 통계 기반 기법을 적용하면 100만x100만이라는 거대한 행렬이 만들어진다. 통계 기반 기법은 말뭉치 전체의 통계를 이용해 단 1회의 처리 만에 단어의 분산 표현을 얻는다. 한편 추론 기반 기법에서는 특히 신셩망을 이용하는 경우 미니배치로 학습하는 것이 일반적이다. 추론 기반 기법은 여러 머신과 여러 GPU를 이용한 병렬 계산도 가능해져서 학습 속도를 높일 수 있다. 3.1.2 추론 기반 기법 개요 우리는 이 모델로 신경망을 사용한다. 모델은 맥락 정보를 입력받아 각 단.. 2023. 7. 12.
[밑시딥2] CHAPTER 2 자연어와 단어의 분산 2.1 자연어 처리란 자연어: 한국어와 영어 등 우리가 평소에 쓰는 말 (부드러운 언어) 인공어: 프로그래밍 언어, 마크업 언어 등 (딱딱한 언어) 자연어 처리: ‘자연어를 처리하는 분야’ = 우리의 말을 컴퓨터에게 이해시키기 위한 기술 2.1.1 단어의 의미 단어는 의미를 가지는 말의 최소 단위이다. 따라서 자연어를 컴퓨터에게 이해시키는 첫 단계는 ‘단어의 의미’를 이해시키는 것이다. 세 가지 기법 시소러스를 활용한 기법: 시소러스(유의어 사전)을 이용 통계 기반 기법: 통계 정보로부터 단어를 표현 추론 기반 기법: 구체적으로는 word2vec (3장) 2.2 시소러스 이렇게 모든 단어에 대한 유의어 집합을 만든 다음, 단어들의 관계를 그래프로 표현하여 단어 사이의 연결을 정의한다. 이 ‘단어 네트워크.. 2023. 7. 5.
[밑시딥2] CHAPTER 1 신경망 복습 1.1 수학과 파이썬 복습 1.1.1 벡터와 행렬 수학과 딥러닝 등 많은 분야에서 '열벡터' 방식을 선호하지만, 이 책에서는 구현 편의를 고려해 '행벡터'로 다룬다. 1.1.2 행렬의 원소별 연산 다차원 배열들에서 서로 대응하는 원소끼리 (각 원소가 독립적으로) 연산이 이뤄지는 것을 넘파이 배열의 '원소별 연산'이라고 한다. 1.1.3 브로드캐스트 1.1.4 벡터의 내적과 행렬의 곱 1.1.5 행렬 형상 확인 1.2 신경망의 추론 1.2.1 신경망 추론 전체 그림 1.2.2 계층으로 클래스화 및 순전파 구현 - 모든 계층은 forward()와 backward() 메서드를 가진다. - 모든 계층은 인스턴스 변수인 params 와 grads를 가진다. class Sigmoid: def __init__(sel.. 2023. 7. 3.
[밑시딥1] CHAPTER 8 딥러닝 8.1 더 깊게 그동안 배운 기술을 집약하고 심층 신경망을 만들어서 MNIST데이터셋의 손글씨 숫자 인식에 도전해보자. 8.1.1 더 깊은 신경망으로 여기서 사용하는 합성곱 계층은 모두 3x3 크기의 작은 필터로, 층이 깊어지면서 채널 수가 더 늘어나는 것이 특징이다. 가중치 초깃값으로는 He 초깃값, 파라미터 갱신에는 Adam을 사용한다. 이 신경망의 정확도는 99.38%가 된다. 8.1.2 정확도를 더 높이려면 데이터 확장(data augmentation)은 입력 이미지를 알고리즘을 통해 인위적으로 확장하는 것이다. 위와 같은 변형 외에도 crip 이나 flip등이 있다. 밝기 변화, 확대, 축소도 효과적이다. 8.1.3 깊게 하는 이유 층을 깊게 할 때의 이점으로는 신경망의 파라미터 수가 줄어든다는.. 2023. 7. 3.
[밑시딥1] CHAPTER 7 합성곱 신경망(CNN) CNN은 이미지 인식과 음성 인식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 CNN을 기초로 한다. 7.1 전체 구조 CNN에는 합성곱 계층(convolutional layer)과 풀링 계층(pooling layer)이 있다. 지금까지 본 신경망은 완전연결(fully-connected)이다. 이런 계층은 어파인 계층이라는 이름으로 구현했다. 위 완전연결 신경망은 Affine-ReLU 조합이 4개가 쌓였고, 마지막 5번째 층은 Affine계층에 이어 소프트맥스 계층에서 최종 결과(확률)를 출력한다. CNN에서는 합성곱 계층과 풀링 계층이 추가된다. CNN 계층은 'Conv-ReLU-(Pooling)' 흐름으로 연결된다(풀링 계층은 생략하기도 한다) 지금까지의 .. 2023. 6. 26.
[밑시딥1] CHAPTER 6 학습 관련 기술들 이 장에서는 가중치 매개변수의 최적값을 탐색하는 최적화 방법, 가중치 매개변수 초기값, 하이퍼파라미터 설정 방법 등 중요한 주제를 다룬다. 오버피팅의 대응책인 가중치 감소와 드롭아웃 등 정규화 방법도 설명하고 구현해보자. 배치 정규화도 알아보자. 6.1 매개변수 갱신 신경망 학습의 목적: 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것 최적화: 이러한 문제를 푸는 것 SGD: 매개변수의 기울기를 구해서, 기울어진 방향으로 매개변수 값을 갱신하는 일을 반복하면서 최적의 값에 다가갔다. 6.1.1 모험가 이야기 6.1.2 확률적 경사 하강법(SGD) SGD는 수식으로 다음과 같이 나타낼 수 있었다. 파이썬 클래스로 구현해보자. 매개변수 갱신은 위 클래스가 하니, 우리는 optimizer에 매개변수와 .. 2023. 6. 21.
[클린코드] 2장 의미 있는 이름 1) 들어가면서 이름을 잘 지으면 편하다. 2) 의도를 분명히 밝혀라 변수, 함수, 클래스 이름은 이름에서 존재 이유와 수행 기능, 사용방법이 드러나야 한다. 3) 그릇된 정보를 피하라 코드에 그릇된 단서를 남겨서는 안된다. list가 아닌데 list라고 이름짓거나 너무 흡사한 이름도 헷갈리니 사용 말자. 4) 의미 있게 구분하라 읽는 사람이 구별 가능하도록 의미 있게 짓자. 불용어(a, the, data, info) 금물 5) 발음하기 쉬운 이름을 사용하라 커뮤니케이션과 뇌 효율성을 위해. 6) 검색하기 쉬운 이름을 사용하라 나중에 검색하기 쉽도록 이름 작성. 그런 의미에서 긴 이름이 짧은 이름보다 좋지만, 길이는 범위 크기에 비례해야 한다.[N5] 7) 인코딩을 피하라 헝가리식 표기법(타입 표기), .. 2023. 6. 20.
반응형