목록전체 글 (66)
모두야
지금까지 살펴본 신경망을 피드포워드(feed forward) 신경망이다. 피드포워드 신경망이란, 흐름이 단방향 신경망이다. -> 시계열 데이터 성질(패턴)을 충분히 학습할 수 없다. ==> 따라서, 순환 신경망 (RNN)이 등장한다. word2vec 복습 - CBOW 모델 : 주변 단어(맥락)으로부터 정답(타깃)을 추측한다. 윈도우 크기는 하이퍼파라미터이다. 항상 좌우 대칭이였지만, 이번에는 맥락을 왼쪽 윈도우만으로 한정한다. CBOW 모델의 학습 : 손실 함수(말뭉치 전체의 손실함수 총합)을 최소화하는 가중치 매개변수를 찾자. -> 이러한 가중치 매개변수를 찾게 되면 CBOW 모델은 맥락으로부터 타깃을 더 정확히 추측할 수 있다. ==> 이러한 학습을 통해, 단어의 의미가 인코딩된 '단어의 분산 표현'..
앞 장에서 살펴본 CBOW 모델의 문제점은 말뭉치에 포함된 어휘 수가 많아지면 계산량이 커진다는 점이다. 문제점 입력층의 원핫 표현과 가중치 행렬 Win의 곱 계산 - 어휘 수가 많아지면 원핫 표현의 벡터 크기도 커진다. 은닉층과 가중치 행렬 Wout의 곱 및 Softmax 계층의 계산 - Wout 행렬 곱 계산량도 많다. - 어휘량이 많으면 Softmax 계층에서 계산량이 증가한다. 해결책 Embedding 새로운 계층 도입 네거티브 샘플링 새로운 손실 함수 도입 1. Embedding 계층 기존의 문제점 입력 원핫 벡터를 Matmul 계층에서 가중치 행렬과 곱해 은닉층을 만들어 주었다. 이때 나타나는 결과는 입력(원핫벡터1)이므로 단순히 행렬의 특정 행을 추출하는 것 뿐이다. 따라서 거대한 벡터를 모..
CH3) word2vec - 간단ver (1) CH3) word2vec - 간단ver (1) 단어의 의미를 주변 단어에 의해 형성된다. 추론 기반 기법 word2vec 통계 기반 기법의 문제점 말뭉치의 어휘 수가 많으면 SVD 로 계산량이 큰 작업을 처리하기 어렵다. 통계 기반 기법 : 학습 데이 meme2.tistory.com word2vec 학습 데이터 준비하기 맥락 ->신경망 모델 -> 타깃 말뭉치로부터 맥락,타깃을 만드는 함수 def create_contexts_target(corpus, window_size=1): '''맥락과 타깃 생성 :param corpus: 말뭉치(단어 ID 목록) :param window_size: 윈도우 크기(윈도우 크기가 1이면 타깃 단어 좌우 한 단어씩이 맥락에 포..
단어의 의미를 주변 단어에 의해 형성된다. 추론 기반 기법 word2vec 통계 기반 기법의 문제점 말뭉치의 어휘 수가 많으면 SVD 로 계산량이 큰 작업을 처리하기 어렵다. 통계 기반 기법 : 학습 데이터를 한꺼번에 처리한다. (배치 학습) 추론 기반 기법 : 학습 데이터 일부를 순차적으로 학습한다. (미니배치 학습) 추론 기반 기법 : 추론 문제를 풀고 학습 하는 것 : 단어의 출현 패턴을 학습 하는 것 추론 기법에는 신경망 모델이 등장한다. 모델은 맥락 정보를 입력받아 출현하는 각 단어의 출현 확률을 출력한다. 원핫 표현(원핫 벡터) 단어-> 고정 길이 벡터로 변환하여 신경망에서 단어를 처리한다. 신경망의 화살표에 가중치(매개변수)가 존재하여, 입력층 뉴런과 가중치의 합이 은닉층이 된다. 완저연결계..
자연어 처리 -> 컴퓨터가 우리가 하는 말을 알아듣게(이해하게) 만드는 것이다. 고전적인 기법 (딥러닝 이전) 딥러닝 기법 (신경망) 파이썬으로 텍스트를 다루는 연습 - 텍스트를 단어로 분할하는 처리, 단어를 단어 ID로 변환하는 처리 앞으로 텍스트 처리를 위한 사전 준비!!! 자연어 (Natural Language) : 한국어, 영어 등 평소에 우리가 쓰는 말 자연어 처리(Natural Language Processing) : 자연어를 처리하는 분야 : 우리의 말을 컴퓨터에게 이해 시키기 위한 기술 : 사람의 말을 컴퓨터가 이해하도록 만들어서, 컴퓨터가 우리에게 도움이 되는 일을 수행하도록 하는 것 컴퓨터 이해 (프로그래밍 언어 : 딱딱한 언어) 평소 사용하는 말(자연어 : 부드러운 언어- 똑같은 의미..
역전파를 포함하는 계층 구현하기 Sigmoid 계층 Affine 계층 Softmax with Loss 계층 - Softmax 계층 - Cross Entropy Error 계층 Sigmoid 계층 # 역전파 포함 시그모이드 함수 클래스 구현 class Sidmoid: def __init__(self): self.params,self.grads = [],[] self.out = None def forward(self,x): out = 1/(1+np.exp(-x)) self.out = out # y return out def backward(self,dout): #dout = dL/dy dx = dout*(1.0-self.out)*self.out # y*(1-y) return dx Affine 계층 # 역전파..
이전까지 신경망의 추론을 살펴보았다. 학습되지 않은 신경망은 '좋은 추론'을 해낼 수 없다. 따라서 학습을 먼저 수행하고, 학습된 매개변수를 이용하여 추론을 수행하는 흐름이다. 신경망 추론 : 다중 클래스 분류 등의 문제에 대한 답을 구하는 작업 (확률) 신경망 학습 : 최적의 매개변수 값을 찾는 작업 (손실) 3. 신경망 학습 3.1 손실함수 신경망 학습에서 학습이 얼마나 잘되고 있는가를 알기 위한 척도가 필요하다. 학습 단계에서 신경망의 성능을 나타내는 척도로 손실 loss 를 사용한다. 손실 : 학습 데이터(학습 시 주어진 정답 데이터)와 신경망이 예측한 결과를 비교하여, 예측이 얼마나 나쁜가를 나타내는 스칼라값이다. 신경망의 손실은 손실함수 (loss function)을 사용해 구한다. - 다중 ..
초기 우분투에서 Chrome을 설치하는 방법입니다. 1. Chrome 다운로드 하기 ctrl + Alt + T 로 터미널 창을 열어준다. wget을 통해 Chrome 패키지를 다운로드 한다. wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 2. Chrome 설치하기 정상적으로 다운로드 되었다면, Home에 [google-chrome-stable_current_amd64.deb] 패키지 파일이 생성되었을 것이다. sudo 로 패키지를 설치한다. sudo apt install ./google-chrome-stable_current_amd64.deb +) 패키지 설치 에러 해결 방법 Ubuntu 패키지 설치 중 종종 ..
한 가지 이상의 방법을 알아내기 전에는 제대로 이해한 것이 아니다. - 마빈 민스키 (컴퓨터과학자/인지과학자) 밑바닥부터 시작하는 딥러닝 1권 전체를 복습하는 장이다. 1. 수학과 파이썬 벡터 행렬 파이썬 코드 넘파이 코드 벡터 : 1차원 배열 행렬 : 2차원 배열 벡터와 행렬을 np.array() 메서드로 생성할 수 있다. np.ndarray 클래스 - 인스턴스 변수 - shape : 다차원 배열 형상 - ndim : 차원 수 백터의 내적 : 두 벡터가 얼마나 같은 방향을 향하고 있는가 : 완전히 같은 방향이면 두 벡터의 내적은 1이다. np.dot() : 벡터의 내적과 행렬의 곱 모두에 사용할 수 있다. : 인수가 모두 1차원 배열이면 벡터의 내적을 계산한다. : 인수가 2차원 배열이면 행렬의 곱을 ..
- 템플릿 Html 파일 연결하기 - URL, View가 템플릿과 어떻게 연결 되는가? 뷰(View) - Django 웹의 로직을 담당한다. 웹에서 일어나는 데이터 저장, 파일 다운로드 등의 일을 처리한다. 프로젝트에서 View 만들어보기 4가지 View를 만들어보자. 1) Question 색인 페이지 : 최근 질문들을 표시한다. 2) Question 세부 페이지 : 질문 내용과, 투표할 수 있는 서식을 표시한다. 3) Question 결과 페이지 : 특정 질문에 대한 결과를 표시한다. 4) 투표 기능 : 특정 질문에 대해 특정 선택을 할 수 있는 투표 기능을 제공한다. #polls/views.py 수정 from django.shortcuts import render # Create your views ..