Machine learning

    [NLP] . OOV 를 해결하는 방법 - 1. BPE(Byte Pair Encoding)

    컴퓨터가 자연어를 이해하는 기술은 크게 발전했다. 그 이유는 자연어의 근본적인 문제였던 OOV문제를 해결했다는 점에서 큰 역할을 했다고 본다. 사실 해결이라고 보긴 어렵고 완화가 더 맞는 표현인 거 같다. 사람들도 모르는 단어 있으면 이해하기 어려운건 마찬가지 OOV(Out-Of-Vocabulary) 문제란 무엇일까? 말 그대로 단어 사전에 없다는 뜻이다. 자연어의 전처리 과정에서는 학습데이터의 모든 단어를 토큰화 하여 Vocabulary를 만들고 그 Vocabulary 를 기준으로 정수 인코딩(단어를 숫자로 표현함)을 하게된다. 실제 사용할 때(검증 혹은 상용화)도 이 과정을 반복하는데 새로운 단어 토큰이 들어왔을 때 vocabulary에 없을 경우 unknown token을 반환한다. * 실제 경험담..

    [Deep Learning] Tensorflow 자주 사용하는 Tensor 함수 정리

    Tensorflow 프레임 워크를 사용하다 보면 자주사용하는 코드를 발견하곤 하는데. 정확히 어떤 기능을 하는 지 알지못하고 함수이름으로 대충 짐작하고 넘어가는 경우가 많았다. 이번엔 이런 것들을 코딩하는 동안에 발견할때마다 정확한 기능을 정리해보고자 한다. 중요도 상관없이 계속해서 나열 *Dense , Embedding 같은 Layer 들은 제외하고 Tensor들을 다루는 함수들 expand_dims - tf.expand_dims(input, axis) 용어 설명 : (1) Expand : 확장하다, 넓히다 (2) dimension(dims) : 차원 해석 : 차원을 확장해주는 함수이다. image = tf.zeros([10,10,3]) # TensorShape([10, 10, 3]) "0"으로 채워진..

    [NLP] Transformer : Masked Multi-Head Attention - part3

    Transformer Decoder : 트렌스포머 모델의 디코더(Decoder)는 인코더(Encoder)와 다르게 Masked Attention 이 들어간다. Masked Multi-head Attention Mask(마스크) 란? Masked 혹은 Masking 이라는 용어 차제는 포토샵에서 많이 접할 수 있지만 무언가로 가린다는 의미이다. 디코더(Decoder)에서의 Self-Attention Layer 는 반드시 자기 자신 보다 앞쪽에 포지션에 해당하는 토큰들의 어텐션 스코어만 볼수있다. 아웃풋들이 주어졌을 때 뒤에 나오는 단어들은 볼 수 없다. ( 기본적인 seq2seq 모델의 학습 개념 transformer 도 동일함.) Masking을 수학적으로 구현할 때는 포지션에 해당하는 Score 값을 ..

    [NLP] Transformer : Self-Attention ( Multi-head-Attention ) - part2

    https://acdongpgm.tistory.com/219?category=910966 [NLP]. Transformer : Structure 앞서 시퀀스 투 시퀀스 모델에 대해서 설명하면서 어텐션에 대한 개념을 설명했다. Transformer의 논문 제목은 "Attention is All You Need"이다. 어텐션만 있으면 다 가능하다. 뭐 이런 뜻이다. 즉, 트랜스 acdongpgm.tistory.com 앞서 설명했듯이 임베딩 이후에 포지셔널 인코딩을 통해서 포지션 정보를 가진 임베딩 벡터가 인코딩 블록으로 들어오게 된다. 논문의 핵심인 Multi-Head Attention의 동작하는 방식을 알아보고 그 이후에 정규화 방법(Residual connection & Normalization)도 같이..

    [NLP]. Transformer : Structure - part1

    앞서 시퀀스 투 시퀀스 모델에 대해서 설명하면서 어텐션에 대한 개념을 설명했다. Transformer의 논문 제목은 "Attention is All You Need"이다. 어텐션만 있으면 다 가능하다. 뭐 이런 뜻이다. 즉, 트랜스포머는 어텐션 기법을 극대화 한 모델이라고 볼 수 있다. 트랜스포머는 RNN의 기반의 모델처럼 한 번에 하나씩 처리하는 문제를 지적했다. * 순차적으로 처리하면 속도가 너무가 느리다!!! 어텐션을 사용하면서 스피드를 최대한으로 끌어올려보자!! 그래서 트랜스포머는 순차적으로 하지 않고 한 번에 계산을 해버린다. 그전에 모델의 구조부터 살펴보자. 모델의 구조는 6개의 인코더와 6개의 디코더 구조로 되어있다. 여기서 6개는 최적화 수가 아니라 논문에서 사용한 갯 수 이기 때문에 6개..

    [NLP] Sequence to Sequence(시퀀스 투 시퀀스) 코드

    https://acdongpgm.tistory.com/216 [NLP] Sequence to Sequence (시퀀스 투 시퀀스), Attention(어텐션) 개념 시퀀스 투 시퀀스 모델은 셀프 어텐션의 등장으로 요즘에 잘 사용하지 않지만 자연어 처리에서 중요한 개념을 내포하고 있고 Many to Many task에 대해서 자세히 알아볼 수 있다. 그리고 꼭 얻어가야 acdongpgm.tistory.com 시퀀스 투 시퀀스의 모델 구조와 어떻게 동작하는지에 대해 코드를 통해 이해해 보고자 한다. 예제에서 사용한 데이터 셋은 연애 질문에 대한 Q&A 데이터이고 시퀀스 투 시퀀스로 간단한 챗봇을 만들고자 한다. 출처 : 텐서 플로 2와 머신러닝으로 시작하는 자연어 처리 위 책에 있는 예제를 그대로 따라 해보..

    [NLP] Sequence to Sequence (시퀀스 투 시퀀스), Attention(어텐션) 개념

    시퀀스 투 시퀀스 모델은 셀프 어텐션의 등장으로 요즘에 잘 사용하지 않지만 자연어 처리에서 중요한 개념을 내포하고 있고 Many to Many task에 대해서 자세히 알아볼 수 있다. 그리고 꼭 얻어가야 할 것은 시퀀스 투 시퀀스는 어떤 게 문제였고 현재는 그 문제를 어떻게 개선했는지에 대해서 반드시 알 필요가 있다. 먼저 시퀀스(Sequence)란 무엇일까? 시퀀스란 말은 영화에서 몇 개의 관련된 장면을 모아서 이루는 구성단위로도 쓰이고 전기 회로를 구성한 도면을 말하기도 한다. 이 처럼 여러 분야에서 각기 다르게 쓰이는데 자연어 처리에서는 단어들이 2개 이상 묶여있는 것으로 이해하면 된다. [ i , am , a ,boy ] 시퀀스 투 시퀀스 모델(Sequence to Sequence model) ..

    [Deep Learning] Weight Initialization(기울기 초기화), Xavier , He

    Weight Initialization 은 Gradient descent(경사하강법)을 하기전에 기울기값을 초기화 해준다라는 뜻이다. 실제 사용할 때는 대부분 Default 로 설정되어있어서 그냥 넘어가는 경우도 있지만 알아보도록하자. 기울기를 초기화 해준다는 것은 사실 생소하지만 당연한 것이다. 컴퓨터는 초기화해주지 않으면 쓰레기 값을 가지기 때문이다. 그래서 0으로 초기화를 해주거나 랜덤으로 초기화해주는 경우가 종종있지만. 딥러닝에서는 초기화 시점의 차이가 학습의 결과를 뒤바꿀 수 있으므로 보다 나은 초기화 방식을 모색하게 되었다. 초기화 시점의 차이가 학습 결과를 뒤바꿀 수 있다는 것을 풀어서 해석해보면 왼쪽 끝지점으로 초기화를 한 경우에는 local minimum 값이 학습결과가 될 것이고. 오른..

    [Deep Learning] Activation Function ( 활성화 함수 ) - 비선형 함수(non linear function )

    딥러닝에서 인공신경망을 설계할때 레이어마다 항상 Activaiton Function(활성화 함수)를 파라미터로 넣게된다. model.add(layers.Dense(units=512, activation='relu')) relu , elu 등등 ... 이런 것들은 왜 필요한 것일까? 먼저 활성화 함수가 없는 상태를 알아보자. 가장 간단한 인공신경망에서 이렇게 행렬곱으로 연산을 하게 된다. x1 * W1 + x2 * W2 + bias 이것을 한층 더 쌓아보자. 조금 복잡해지지만 행렬곱으로 표현할 수 있다. 하지만 아무리 Layer 를 많이 쌓더라도 결국 복잡한 선형회귀식이 될 뿐이다. Y = ax1 + bx2 + cx3 ....... + b 결국 직선이다.. 아무리 복잡한 식을 가져온들 직선으로는 곡선이 필..

    [설치]. 윈도우 하위 시스템 WSL 셋팅하기

    WSL 셋팅 코드를 직접 입력해야하는 경우는 노란색 배경 처리 WSL : Linux용 Windows 하위 시스템 ( 윈도우에서 리눅스를 사용할 수 있는 시스템 ) 1. 설치 및 설정 Microsoft Store 에서 Ubuntu 20.04 다운로드 윈도우 앱으로 설치됨. WSL 버전 확인 윈도우 파워쉘에서 wsl –l –v 명령어로 확인 가능 *WSL 버전 번경 만약 version1 이라면 -> version2로 버전을 변경 시켜줘야함. (종종 이런 경우 발생함. 공식 홈페이지 메뉴얼 참고) 추가 참고 자료 https://www.44bits.io/ko/post/wsl2-install-and-basic-usage Window 하위 시스템 활성화 Linux 용 Windows 하위 시스템 체크 2.리눅스 셋팅..