전체 글 109

[NLP] Self Attention과 Multi-Head Attention을 알아보자

트랜스포머 모델에서 사용하는 Self Attention과 Multi-Head Attention의 개념을 이해하기 위해 우선 Seq2Seq with Attention 모델이 가진 문제점에 대해 이해해야한다. Seq2Seq with Attention의 문제연산의 순차성으로 인한 병렬 처리의 한계Seq2Seq 모델은 RNN 계열의 Encoder-Decoder 구조를 기반으로 하며, RNN의 특성 상 입력 시퀀스를 순차적으로 처리해야한다.이전 time step의 출력이 다음 time step의 입력으로 들어가기 때문에 병렬 처리가 어렵다는 문제가 있다.그래서 긴 시퀀스를 처리할 때 학습 속도가 느려지고, 데이터셋의 규모가 커질 경우 학습 속도가 더욱 느려지게 된다. 장기 의존성 (Long-term Depende..

Deep Learning 2024.10.31

[NLP] Show, Attend and Tell: Hard Attention과 Soft Attention에 대해 알아보자

Attention Mechanism - 1. Hard AttentionHard Attention은 이미지의 특정 부분에 정확히 한 번만 집중하는 방식이다. Stochastic한 process라고 할 수 있다.이 말인 즉슨, 모든 hidden state를 Decoding 과정의 input으로 사용하는 대신, hidden state를 확률 s로 샘플링하여 사용한다. 이 과정에서 어텐션 위치 변수 s_t를 사용해 어텐션할 위치를 표현한다. 이 때, Multinoulli 분포를 사용해 각 위치에 대한 확률 분포 alpha t를 설정한다.쉽게 말하면, 어떤 위치에 집중할지는 확률적으로 결정된다는 것이다.모델이 위치를 선택하게 되면 모델이 현재 집중하고 있는 이미지의 특정 부분을 나타내는 랜덤 변수 z_t를 정의하..

Deep Learning 2024.10.30

[Linux/Ubuntu] VMWare Workstation player 17에 Ubuntu 설치해보자

https://softwareupdate.vmware.com/cds/vmw-desktop/player/17.5.2/23775571/windows/core/  CDS Repository - /var/www/public/stage/session-120/cds/vmw-desktop/player/17.5.2/23775571/windows/core softwareupdate.vmware.com위 링크에서 VMware-player-17.5.2-23775571.exe.tar 파일을 다운로드 받아준다. tar 파일 형식은 Windows cmd에서 압축을 풀 수 있다. 압축을 풀기 전에 원하는 경로에 압축 푼 파일이 저장될 폴더를 만들어준다. 나는 VMware라는 폴더를 생성했다. 설치 프로그램을 열어 설치를 완료해주면..

OS/Linux 2024.10.29

[NLP] 멀티 모달 (Multi-Modality)과 이미지 캡셔닝

멀티 모달 (Multi-Modality)이란?텍스트, 이미지, 오디오, 비디오 등 다양한 유형의 데이터(Modality)를 함께 사용하는 것을 말한다.멀티 모달 모델 (Multi-Modality-Model)은 이러한 여러 유형의 데이터를 인식하고 이해할 수 있는 모델을 말한다.개별 Modality에서 얻을 수 있는 정보 이상을 추출할 수 있으며, 더 풍부한 표현 학습 및 예측이 가능해진다.멀티 모달 모델의 구성 요소현재 사용되고 있는 멀티 모달 모델 (Multi-Modality-Model)의 기본적인 구조는 3가지 단계로 나누어볼 수 있다. 각 Modality별로 입력 인코딩 -> 여러개 데이터 type을 결합(fusion) -> 모델의 input으로 넣어 inference 도출 각 과정을 간단하게 이해..

Deep Learning 2024.10.29

[NLP] 어텐션 메커니즘 (Attention Mechanism)에 대해 알아보자

앞에서 이야기해보았던 RNN 기반의 Seq2Seq 모델에는 두 가지의 중요한 문제가 존재했다. 1. 하나의 고정된 크기의 벡터 (Context Vector)에 모든 정보를 압축하기 때문에, 긴 시퀀스의 경우 정보 손실이 발생할 수 있다.2. RNN의 고질적 문제인 기울기 소실 (Vanishing gradient) 문제가 존재한다. 이를 해결하기 위해 나온 아이디어가 바로 Attention Mechanism이며 천천히 알아가보도록 하자.어텐션(Attention)의 아이디어어텐션의 기본 아이디어는 디코더에서 출력 단어를 예측하는 매 시점 (time step)마다 인코더에서의 전체 입력 문장을 다시한번 참고하는 것이다. 이 때, 전체 입력 문장을 모두 동일한 비율로 참고하는 것이 아니라, 계산된 가중치를 통해..

Deep Learning 2024.10.28

[NLP] 역전파 (Backpropagation)의 개념을 알아보자

역전파 (Backpropagation)은 딥러닝에서 신경망 모델 (Neural Network Model)의 가중치를 학습하는 중요한 알고리즘이다.역전파는 오차를 최소화하기 위해 가중치를 조정하는 방법으로, 손실함수의 기울기를 계산하고 가중치를 업데이트하는 과정을 말한다. 역전파의 기본 개념역전파 (Backpropagation)는 오차 역전파 알고리즘이라고도한다. 순방향 (Forward Propagation)으로 계산된 출력과 실제 정답 간의 차이를 기반으로 가중치(weight)와 편향(bias)를 업데이트 하며 cost function을 최소화하는 것이 목적이다.이 과정에서 Chain Rule 개념을 사용해 신경망의 각 parameter가 결과에 미치는 영향을 계산하게 된다. 가중치나 편향 값을 편미분,..

Deep Learning 2024.10.28

[NLP] Seq2Seq(Sequence-to-Sequence) 모델에 대해 알아보자

Seq2Seq 모델이란?Seq2Seq(Sequence-to-Sequence) 모델은 입력 시퀀스를 받아 출력 시퀀스를 생성하는 모델로, 번역이나 챗봇 같은 자연어 처리에서 많이 사용되는 모델이다.이 모델은 인코더(Encoder)와 디코더(Decoder) 구조로 되어 있어 Encoder-Decoder 모델이라고도 한다.인코더 아키텍처와 디코더 아키텍처의 내부는 사실상 2개의 RNN 아키텍처로, 입력 문장을 받는 RNN Cell을 인코더, 출력 문장을 출력하는 RNN Cell을 디코더라고한다.((성능 이슈로 인해 Vanilla RNN을 사용하지는 않고, LSTM Cell 또는 GRU Cell로 구성한다.)  Encoder인코더는 입력 시퀀스를 받아 이것을 하나의 고정된 벡터 (Context Vector)로 ..

Deep Learning 2024.10.28

[NLP] 자연어 처리 관점에서 RNN의 한계에 대해 알아보자

RNN 모델의 한계RNN (Recurrent Neural Network)에는 크게 다음과 같은 문제점이 있었다. 1. 기울기 소실 (Vanishing Gradients) 기울기 소실이란 역전파(Backpropagation)과정에서 기울기(gradient) 값이 점점 작아져서 0에 가까워지는 것을 의미한다.RNN은 이전 시점의 출력을 다음 시점의 입력으로 연결해 순차적인 데이터 (시계열 데이터)를 처리하게 되는데, 이 과정에서 가중치 업데이트를 위해 역전파, 시간에 따른 역전파를 사용한다. ht: 시점 t의 은닉 상태 (hidden state)Wh, Wx: 가중치 행렬σ: tanh, sigmoid와 같은 비선형 활성화 함수 역전파를 통해 가중치를 업데이트하려면, 손실 함수의 변화량(기울기)이 은닉 상태에 ..

Deep Learning 2024.10.28

[SpringBoot] SpringBoot와 PostgreSQL 연동하기

프로젝트에 사용할 데이터베이스로 PostgreSQL, MongoDB를 사용할 예정이다.오늘은 로그인 테스트를 위해 PostgreSQL을 스프링부트에 연동해볼 것이다!! 1. PostgreSQL 설치https://www.postgresql.org/download/ PostgreSQL: Downloads www.postgresql.org위 링크에서 PostgreSQL을 다운받고 설치해주자 2. SQL Shell (psql)에서 PostgreSQL 접속설치 완료 후 Window 탐색창에 SQL Shell을 검색해서 열어준다. Server [localhost]: Enter 누르기Database [postgres]: Enter 누르기Port [5432]: Enter 누르기Username [postgres]: En..

Backend/SpringBoot 2024.10.16

[SpringBoot] SpringInitilaizr 프로젝트 생성 후 gradle 빌드 초기 세팅

SpringInitializr에서 gradle 프로젝트를 생성한 후 Intellij에서 open해 빌드를 하려고 한다. (스프링부트 3.3.4 버전, Java 17, Gradle 8.10.2) 1. Java 17 다운로드 및 시스템 환경 변수 설정기존에 사용하던 노트북 환경이 아닌 새로운 환경에서 작업을 시작했는데, Java 환경 변수 설정에 대해 아무 생각도 안하고 있었다. Gradle은 내부적으로 Java를 사용해 작업을 수행하기 때문에 JAVA_HOME이 올바르게 설정되어 있지 않으면 Gradle이 Java를 찾지 못해 빌드가 실패하게 된다. (프로젝트에서 SDK 설정을 Java 17로 해놓았으나 System Path에 Java 17에 대한 경로가 없었기 때문에 빌드가 실패했다.) https://w..

Backend/SpringBoot 2024.10.15