일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 트랜스포머 #transformer #attention #self-attention #어텐션 #인공지능 #AI #딥러닝 #NLP #자연어처리
- 백준
- 깃허브 #우분투 #ubuntu #Github #깃허브 우분투 #깃헙 우분투 #깃헙
- 백준 #알고리즘 #골드
- 알고리즘 #levenshtein distance #편집거리 #edit distance
- BERT #구글BERT #BERT의정석
- GPU #cuda out of memory #gpu 메모리 #pytorch
- 구름자연어처리과정
- Machine Learning
- 머신러닝
- GPU #jtorch GPU #파이토치 병렬 #파이토치 GPU #pytorch gpu #multi process torch #horovod
- 트랜스포머 #자연어처리 #딥러닝 #구글 #attention #self-attention #BERT #transformer #deeplearing
- docker #cuda #docker container #도커 #도커 컨테이너 #쿠다 #cuda 11.3
- jupyter notebook #anaconda #vscode #pytorch #딥러닝 #deep learning #vscode server #서버 vscode #ssh vscode #vscode cuda
- docker #도커 #도커 컨테이너 #docker container #도커 우분투
- pandas #folium #groupby #네이버부스트코스 #코칭스터디
- 파이썬 #Python
- docker #우분투 #ubuntu #도커 설치 #docker 설치 #docker installation #우분투 도커
- ssh #우분투 ssh #우분터 서버 #도커 #우분투 도커 #docker #cuda #우분투 개발환경 #딥러닝 #ubuntu docker #ubuntu cuda
- pytorch #cuda #우분투 torch #ubuntu pytorch #cuda torch #cuda pytorch
- docker #아나콘다 #anaconda #ubuntu anaconda #docker anaconda
- 구름
- cuda #centos #cuda삭제 #리눅스 #cenos cuda삭제
- logistic regression
- Today
- Total
바닥부터 시작하는 개발 공부
[구글 BERT의 정석] Chapter1: 트랜스포머 입문(2) 본문
이전 글에서 트랜스포머와 어텐션에 대해 대략적으로 알아보았다.
트랜스포머는 어텐션 구조를 이용해 문장 간의 관계를 파악한다.
그리고, 여기서 Q,K,V를 활용한다.
오늘은 저 행렬들을 어떻게 활용하여 관계를 구하는지 자세히 알아보자
1단계
첫번째 단계는 쿼리 행렬과 키(transpose)의 내적 연산을 수행한다.
행과 열의 이름은 각 단어로 불러보자 그럼 "I" 행 "I"열의 원소는 "I" 벡터와 "I"벡터의 내적이다
마찬가지로 임의의 행 N과 열 M에 대해서 원소는 단어 N 벡터와 M의 내적이라고 할 수 있다.
기하학적으로 내적은 두 벡터의 선형사상을 의미한다.
조금 비약해서 말하면 두 벡터가 비슷한지 정도로 이해하면 좋을 것 같다.
그렇다면 결과로 나온 행렬의 각 원소는 단어와 단어의 유사도의 행렬이라고 할 수 있다.
2단계
다음은 Q와 K의 내적을 K벡터의 차원의 제곱근으로 나누어준다. 이를 통해 안정적인 gradient를 얻을 수 있다
3단계
마지막으로 softmax함수를 통해 정규화 작업을 진행한다. 소프트맥스는 함수의 특성 상 0~1 사이의 값을 지닌다.
이를 통해 2단계의 결과를 적용하면 각 단어들이 어느정도 %의 유사도를 가지는지 알 수 있다.
이렇게 결과로 나온 행렬은 스코어 행렬이라고 한다.
Score Matrix = $Softmax(\frac{QK^T} {\sqrt d})$
4단계
다음은 어텐션 행렬을 계산하는 것이다. 어텐션 행렬은 각 단어의 벡터값을 갖는다.
앞서 구한 스코어 행렬에 value 행렬을 곱하여 구할 수 있다.
지금까지 과정을 요약하면
1.쿼리와 키의 내적
2.1의 결과를 차원의 제곱근으로 나눔
3.소프트맥스 함수 적용
4.어텐션 행렬 계산
'Algorithm' 카테고리의 다른 글
[알고리즘]비전공자의 약 한달 간 백준 골드 달성 후기 +학습방법 (0) | 2023.02.25 |
---|---|
[알고리즘]소수탐색: 에라토스테네스의 체 (0) | 2023.02.06 |
[알고리즘]이진 탐색(binary search) 알고리즘(+python구현) (4) | 2023.02.04 |
[알고리즘]프로그래머스: "더 맵게" (0) | 2023.01.31 |
[알고리즘]Levenshtein distance(1) (2) | 2023.01.03 |