본문 바로가기
728x90

Drawing (AI)/DeepLearning38

딥러닝 직접 구현하기 - (퍼셉트론) Intro 이 공부 시리즈는 다양한 딥러닝 기술들을 직접 구현해보는 능력을 키우기 위한 공부이다. 밑바닥부터 시작하는 딥러닝이라는 책과 다양한 웹사이트를 참고하여 해보려한다. 이미 아는 내용도 있지만 직접 구현해본 내용은 많지 않아서 책을 한번 따라가 보려고 한다. 따라서 구현해보는 것이 의미가 있어 보이는 내용들을 위주로 블로그에 정리해 보고자 한다. 신경망 신경망에서의 행렬곱은 아래와 같이 연산된다. 이러한 행렬곱에 해당하는 간단한 예시를 코드로 표현해보면 numpy를 활용하여 아래와 같이된다. import numpy as np X = np.array([1,2]) print(X.shape) W = np.array([[1,3,5], [2,4,6]]) print(W) print(W.shape) Y = n.. 2023. 6. 21.
Word Embedding(2) Skip-Gram with Negative Sampling (SGNS) 네거티브 샘플링(Negative Sampling)을 사용하는 Word2Vec을 직접 케라스(Keras)를 통해 구현해보고자 한다. 네거티브 샘플링 (Negative Sampling) Word2Vec의 출력층에서는 소프트맥스 함수를 통과한 단어 집합 크기의 벡터와 실제값인 one-hot 벡터와의 오차를 구하고 이로부터 임베딩 테이블에 있는 모든 단어에 대한 임베딩 벡터 값을 업데이트합니다. Word2Vec은 역전파 과정에서 모든 단어의 임베딩 벡터값의 업데이트를 수행하지만, 만약 현재 집중하고 있는 중심 단어와 주변 단어가 '강아지'와 '고양이', '귀여운'과 같은 단어라면, 이 단어들과 별 연관 관계가 없는 '돈가스'나 '컴퓨터'와 .. 2023. 5. 14.
Word Embedding(1) 희소 표현(Sparse Representation) one-hot 인코딩과 같은 방식으로 인코딩을 한 결과인 one-hot 벡터들은 하나의 인덱스의 값만 1이고 나머지 인덱스는 전부 0으로 표현하는 벡터표현 방법을 희소표현이라고 하고 이때 one-hot 벡터는 희소 벡터이다. 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 계속 커진다는 점이다. 단어가 10,000개였다면 벡터의 차원은 10,000이어야한다. 심지어 그 중에서 단어의 인덱스에 해당되는 부분만 1이고 나머지는 0의 값을 가져야만 한다. 단어 집합이 클수록 고차원의 벡터가 된다. 예를 들어 단어가 10,000개 있고 인덱스가 0부터 시작하면서 강아지란 단어의 인덱스는 4였다면 one-hot 벡터는 다음과 같이 표현된다. Ex) 강.. 2023. 5. 11.
Long Short-Term Memory (LSTM) Vanilla RNN의 한계 기본을 뜻하는 Vanilla RNN은 time-step이 길어질수록 정보량이 손실되어 시점이 길어지면 x1과 같은 초반부의 정보의 영향력은 거의 없어지게 된다. 이러한 문제를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 한다. 위와 같은 Vanilla RNN을 보완하여 아래와 같은 LSTM을 만들었다. LSTM 구조 LSTM은 은닉층의 메모리 셀에 입력 게이트, 망각 게이트, 출력 게이트를 추가하여 불필요한 기억을 지우고, 기억해야할 것들을 정한다. 요약하면 LSTM은 은닉 상태(hidden state)를 계산하는 식이 전통적인 RNN보다 조금 더 복잡해졌으며 셀 상태(cell state)라는 값을 추가하였다. 셀 상태는 Ct로 .. 2023. 5. 5.
Recurrent Neural Network 순환 신경망(RNN) RNN(Recurrent Neural Network)은 시퀀스(Sequence) 모델로 입력과 출력을 시퀀스 단위로 처리한다. 단어 시퀀스로 이루어진 언어모델들이 대표적인 시퀀스 모델이다. RNN은 딥러닝에서 가장 기본적인 시퀀스 모델이라고 할 수 있다. 우선 순환 신경망의 가장 큰 특징은 그림과 같이 활성화 함수를 통해 나온 결과를 출력층 방향으로도 보내주는 것이다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를 셀(cell)이라고 한다. 이 셀은 이전의 값을 기억하려고 하는 일종의 메모리 역할을 수행하므로 이를 메모리 셀 또는 RNN 셀이라고 표현한다. 위와 같이 그림을 그리면 조금더 직관적으로 이해하기 쉽다. 은닉층의 메모리 셀은 각각의 시점(ti.. 2023. 5. 2.
Udemy - 딥러닝의 모든 것(Softmax & Cross-Entropy) Softmax function 우선 인공신경망에서 의문으로부터 시작해보자. output layer의 두 결과는 서로 연관이 없는데 어떻게 두 결과 값의 합이 1이 되는걸까? 사실 기본적인 인공신경망에서는 두 결과 값의 합이 1이 된다는 보장이 없다. 우리가 따로 함수를 적용시켜서 그 합이 1이 되도록 조절하는 방법이 유일하다. 그리고 그 함수가 바로 Softmax function이다. 일정한 값 사이의 값으로 바꾸어준다는 점에서 정규화함수라고 불리기도한다. Softmax function은 Cross-Entropy function과 함께 이용된다. Cross-Entropy function 함수는 아래의 Li 함수이고 우리는 아래의 H(p,q) 함수를 이용하게된다. 두 식의 모양은 조금 달라도 결과 값은 똑.. 2023. 4. 23.
Udemy - 딥러닝의 모든 것(CNN) Convolution Neural Network란? Convolution Neural Network란 얀 르쿤이 부흥 시킨 신경망 기법이다. 보통 이미지 분류에서 많이 사용된다. ANN이 인간의 뉴런을 모방하여 구조화한 것과 같이 CNN은 인간의 시신경을 모방하여 구조화했다. 다음에서 하나씩 살펴보자. Convolution 컨볼루션은 이전에 신호와 시스템 강의에서 이미 배운적이 있는 연산이기에 간단하게 보고 넘어간다. 우선 위의 식은 전기전자, 통신 분야의 공학도들은 모두 친숙한 convolution 연산식이다. 위의 그림은 웃는 표정인 Input Image를 Feature Detector이다. 단순하게 보면 Input Image에서 Feature Detector의 사이즈에 맞는 배열을 찾아가며 Feat.. 2023. 4. 6.
Pytorch Basic Intro 4/1부터 데이터 인텔리전스 연구실에서 학부연구생으로 연구활동에 참여하게 되어서 해당 연구실에서 최소한의 연구를 진행하기 위해 필요한 배경지식을 쌓는 과정의 일환으로 Pytorch에 대해 공부를 하고자한다. 파이토치의 라이브러리나 모듈 문법같은 내용은 아래 첨부한 링크인 위키독스에서 굉장히 잘 정리되어있기 때문에 개념적인 내용이나 새롭게 알게된 내용들 위주로 정리하고자한다. Tensor 딥러닝에서 텐서란, 다차원 배열을 나타내는 데이터 구조이다. 텐서는 기본적으로 스칼라, 벡터, 행렬 등과 같은 다양한 차원의 배열을 나타낼 수 있으며, 딥러닝에서 입력 데이터, 가중치, 편향 등의 모든 데이터를 텐서로 표현한다. 예를들어 딥러닝에서 가중치와 편향을 표현할 때도 텐서를 사용하며, 이러한 텐서들은 .. 2023. 3. 18.
Udemy - 딥러닝의 모든 것(ANN 구축하기) 인구 통계학적 세분화 모델 해당 모델은 고객중심의 산업에서는 부가 가치가 굉장히 높고 다양한 시나리오에서 사용될 수 있도록 할 수 있는 모델이다. 우선 이번에 구현해볼 ANN은 은행의 고객 이탈률이 증가하여 그 원인을 조사하여 추후의 새로운 고객에 대해서도 이탈할 고객을 예측하는 모델이다. 우선 자료를 보면 다음과 같다. Customer Id, Surname, CreditScore, Geography, Gender, Age, Tenure, Balance, NumOfProducts, HasCrCard, IsActiveMember, EstimatedSalary와 같은 변수들은 6개월 전에 조사된 자료이고 Exited 여부는 현재 이탈한 고객인지 알려주는 종속변수이다. 위 자료는 만명의 고객 샘플로 구성되어있.. 2023. 1. 6.
728x90