전체 글

전체 글

    트랜스포머(Transformer) - 1 (포지셔널 인코딩)

    트랜스포머는 Attention 메커니즘을 이해한 뒤 읽는 것을 추천한다. 트랜스포머는 NLP에서의 예제가 풍부하며, 그외 다른 State-of-the-Art (SOTA) 기술의 기반이 되는 알고리즘이다. 특히 기계 번역 분야에서 이 모델은 seq2seq의 구조인 인코더-디코더를 따르면서도, RNN을 사용하지 않고도 RNN보다 우수한 성능을 보여주었다. 필자는 아직도 트랜스포머에 대해 공부하고 있으며, 트랜스포머 자체가 방대하고 복잡하게 설계된 알고리즘이기에, 여러 차시로 나눠서 트랜스포머에 대해 설명하고자 한다. 요약본의 상당 부분은 유원준 & 안상준 저의 책을 참고하였음을 사전에 밝힌다. 1. 기존 seq2seq 모델의 한계와 Transformer의 동작원리 seq2seq 모델의 기본 구조는 인코더-디..

    [python] 유클리드 거리 (Euclidean Distance) - 기초

    유클리드 거리는 크기로만 비교한다는 명확한 단점이 있어서 사실 추천시스템에서 유용한 방법은 아니라고 알려져있다. 하지만 선형대수 관점에서 유클리드 거리가 단순히 크기만 뜻하는 것이 아니라, 현실 세계에서 어떻게 접목되고 활용되는지 알 수 있는 것만으로도 큰 도움이 되리라 생각한다. 또한 시도해보는 것 자체만으로 다른 개념을 이해할 때 큰 도움이 되리라 생각한다. 엑셀 테이블에 고객의 데이터가 저장되어 있다고 가정해보자. 이를 테면 아래와 같은 테이블처럼 고객 데이터가 있을 때, 이 데이터를 euclidean distance 개념에 입각해서 어떻게 활용할 수 있을까? 고객명 키 몸무게 나이 성별 박미영 160 50 23 여성 아이윳 155 48 27 여성 이순신 175 71 31 남성 강감찬 176 75..

    Norm, 노름, 거리, euclidean distance, 데이터 유사도

    필자는 처음 선형대수학을 공부할 때 내적이라는 개념이 나오면 도대체 왜?? 해야하는지 궁금했던 것 같다. 직교나 정사영에 대해 배우기 전에는 당최 이해가 되질 않았다. 벡터로써 norm은 자기 자신의 크기(magnitude)가 얼마나 큰 지 알 수 있을 뿐만 아니라, 다른 벡터와 같이 사용될 때 그 의미가 체감되는 것을 알 수 있었다. 예를 들면 데이터의 유사도(similarity)를 구한다고 생각해보자. 어떤 기준으로 임의의 두 데이터 A와 B가 유사하다고 판단할 것인가? 사람의 고향, 나이, 학력, MBTI 등과 같은 것을 알수 있다면, 조금 더 쉽게 유사한 사람인지 아닌지를 알 수 있지 않을까 생각한다. 이걸 선형대수학에서는 크게 두가지 관점에서 확인할 수 있는데, 바로 거리를 활용한 데이터 유사도..

    정형데이터 관점에서의 벡터

    선형대수의 개념을 모르는 사람이더라도, 엑셀은 사용해봤으리라 생각이 든다. 우리는 어떠한 정보를 기록해두기 위해서 엑셀을 사용하는데, 엑셀 테이블의 행과 열이 선형대수 관점에서 어떻게 사용되고 있을까? 아래의 사람의 개인정보를 담은 테이블을 보자 각 행은 한 사람에 대한 데이터를 담고 있다. 이 맨 윗 행에 대한 정보를 테이블에서 똑 떼와서 본다면 160cm, 80kg, 19세, 남성 이라는 정보가 --> (160, 80, 19, 1) 이렇게 하나의 벡터로 표현을 할 수 있다. 물론 파이썬 pandas의 관점에서 생각을 해보면, 하나의 열 (키, 몸무게, 연령, 성별) 이라는 변수들이 벡터로서 표현되어 각 열벡터가 하나로 취합되어 테이블(=데이터프레임=행렬)로써 표현이 되고 있다. 마찬가지로 두번째 세번..

    일차결합(linear combination)

    \(v_1, v_2, ..., v_k\)가 \(\mathbb{R}^n\)의 벡터이고, 계수 \(c_1, c_2, ..., c_k\)가 실수일 때, $$ \textbf{x} = c_1v_1+c_2v_2 + ... + c_kv_k $$ 인 형태를 \(v_1, v_2, ..., v_k\)의 일차결합(linear combination)이라고 한다 일차결합은 굉장히 벡터라는 개념이 추가되어 생소해 보일뿐 실수의 연산으로 생각하면 단순한 개념이다. 단순한 예를 들자면, 숫자 10이 있다고 해보자. 이 숫자 10은 무수히 많은 방법으로 일차결합식으로 표현이 가능하다 10 = 1 + 2 + 3 + 4 10 = 11 - 1 10 = 100 - 90 등.. 고차원 벡터의 개념에서 생각해보자면, \(z = c_1 x + c..

    데이터사이언티스트 & 경제학자가 선형대수학을 공부하는 이유

    필자는 세번의 선형대수학 수업을 각기 다른 학교에서 수강했다. 영국의 에딘버러 대학교에선 선형대수학 개론을, 미국의 노스캐롤라이나 대학교에선 상미분방정식을 배우면서 선형대수의 커널까지의 개념을, 그리고 현재 성균관대학교 데이터사이언스융합학과에서 응용 선형대수 수업을 이수했다. 매번 제대로 공부할 때마다 선형대수의 개념들이 매번 새롭게 다가왔는데, 그때마다 이해의 폭이 넓어지는 것이 느껴졌다. 데이터 사이언티스트를 업으로 삼고있는 지금, 매일 시간이 날 때마다 조금씩이라도 선형대수학을 다시 공부하며 공유하는 시간을 가져볼까 한다. 정형데이터를 행렬의 관점에서 바라보며 분석을 진행할 때, 다중공선성, 노이즈 제거의 측면에서 데이터를 압축할 때, 이미지 & 텍스트 처리 시 빈번하게 마주할 수 있는 대용량 데이..

    [Attention Mechansim] 바다나우 어텐션

    NLP 심화과정 & 딥러닝에서 Transformer와 BERT 레벨의 알고리즘을 공부할 때 필요한 개념인 어텐션 메커니즘, 그중에서도 범용적으로 많이 사용되는 바다나우 어텐션에 대해 알아보자. 이 메커니즘에 대해 알기 위해서는 seq2seq 개념이 선행되어야 이해하기 쉬울 것이다. 단순 닷 프로덕트 어텐션 보다는 조금 더 복잡하지만, 자주 활용하고 한번 테스트 코드라도 작성해 본다면 이해하기가 크게 어렵진 않은 개념이다. 바다나우 어텐션 함수는 Attention(Q, K, V) = Attention Value 로 정의가 되는데, t: 어텐션 메커니즘이 수행되는 디코더 셀의 현재 시점을 의미 Q (Query): t-1시점의 디코더 셀에서의 은닉 상태 K (Keys): 모든 시점의 인코더 셀의 은닉 상태들 ..

    [python] 함수 활용 시 매개변수가 뮤터블 vs 이뮤터블 일때..

    파이썬에서는 매개변수에 실제 인수가 대입된다. 복사가 아니라는 점을 명심해야한다. 파이썬에서 인수 전달은 실제 인수인 객체에 대한 참조를 값으로 전달하여 매개변수에 대입되는 방식이다. 다른 프로그래밍 언어에서는 실제 인수의 값을 매개변수에 복사하는 값에 의한 호출(call by value)를 사용하거나, 실제 인수의 참조를 매개변수에 복사하여 매개변수가 실제 인수와 같아지는 참조에 의한 호출 (call by reference)를 사용한다. 하지만 python은 객체 참조에 의한 전달(call by object reference)를 활용하는데, 위 2가지 호출의 중간 방식으로 인지하면 된다. 따라서 함수 생성 시, 1. 인수가 immutable 일 때: 함수 안에서 매개변수의 값을 변경하면 다른 객체를 생..