인공지능 응용 공학 51

negative sampling 알고리듬

은닉층과 크기가 (100, 1000000)인 Wout과의 매트릭스 곱셈 연산을 통해 softmax 처리가 가능하도록 하기 위해서는 엄청난 규모의 컴퓨팅이 요구된다. 따라서 그런 과중한 연산을 줄일 수 있도록 학습 과정에서 softmax를 사용하는 다중분류에서 Sigmoid 우도(likelyhood) 함수를 사용하는 이진 분류방식으로 처리하도록 알고리듬을 수정하자. 즉 입력이 {you, goodbye}이면 학습은 {say}인가? 아닌가? 로 처리하도록 한다. 즉 긍정적 정답 레이블인 {say} 하나가 있을 수 있지만 동시에 {say}가 아닌 부정적인 정답 레이블들에 대해서도 다할 수는 없지만 일정 수만큼 학습 처리해야 한다. 예를 들자면 {hello}, {.}, {and}, {I}들로서 이들은 라벨 값 ”..

PMI (pointwise mutual information) 척도를 사용한 통계적 기법 개선

동시발생 행렬에서의 동시발생은 하나의 단어를 두고 인접한 위치에서 특정 단어가 출현한 횟수를 나타낸다. 하지만 빈도수가 높다고 해서 그 단어의 중요성이 높아지는 것은 아니다. 예를 들어 보자. ‘the’와 ‘car’ 는 자주 동시 발생 한다. 한편 ‘car’와 ‘drive’는 관련성이 확실히 높다. 그렇지만 단순히 출현횟수만 따진다면 ‘car’와 ‘drive’ 보다는 ‘the’와 ‘car’가 더 높을 것이다. 이 문제 해결을 위해서 PMI(pointwise mutual information) 척도를 새로이 도입하자. P(x)는 x가 일어날 확률, P(y)는 y가 일어날 확률, P(x, y)는 x와 y가 동시에 일어날 확률을 의미한다. 이 PMI 값이 높을수록 관련성이 높다는 의미이다. 동시발생 행렬을 사..

분포가설(distributional hypothesis)기반 통계적 자연어 처리 기법

자연어 처리는 컴퓨터 사이언스 및 언어학 또는 통계학 과의 학문간 제휴 영역에 해당한다. 언어학에서 모든 단어를 포함하는 사전(dictionary)이 있고, 한편 학습 대상 단어 위주로만 편집한 단어장(corpus) 가 있을 수 있다. 한편 인공지능을 만들기 위한 학습해야 할 텍스트가 너무 많아서 단어장 규모가 방대해지는 문제가 있어, 그 해결책을 찾아 보도록 하자. John Firth 교수가 언급했던 “the company a word keeps!“에 주목하자. 특정 단어의 사전적 의미보다는 인접한 단어들의 배치에 의해 ‘context’ 즉 문장의 ‘맥락’을 형성한다는 것이다. 이 맥락을 해석해 보기 위해서 간단한 문장을 대상으로 단어장(corpus)과 단어별 색인, 색인별 단어를 얻어낼 수 있도록 p..

Colab PyTorch 'Bees and Ants' Transfer Learning

TRANSFER LEARNING FOR COMPUTER VISION TUTORIAL: PyTorch 홈페이지의 이 예제 블로그를 참조하여 해설하기로 한다. https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html 메서드(method) train_model을 준비하자. LRscheduler(Learning Rate scheduler) 가 사용된다. 학습횟수가 커질수록 learning rate 값이 조절되된다. device에 데이터 입력 과정과 아울러 optimizer.zero_grad() 명령에 의한 기울기 값 초기화로 부터 시작하여 PyTorch 특유의 backpropagation 포함 학습 알고리듬이 준비된다. 만약 Transfer ..

Colab Translation 코드 실습

구글의 번역 알고리듬에는 앞서 기술된 LSTM 어텐션 알고리듬뿐만 아니라 더욱 진보된 Transformer 알고리듬까지 적용이 되어있다. 구글에서 제공하는 언어 번역 라이브러리를 직접 Colab에서 설치하여 간단하게 사용하는 법을 알아 보자. 간단한 코드이므로 GPU 사용을 배제하는 None 런타임 유형으로 실행시키자. 1 !pip install translate 2 from translate import Translator translator = Translator(from_lang="ko", to_lang="en") translated = translator.translate("나는 인공지능을 공부한다") translated ‘I study artificial intelligence’ 3 transl..

chatGPT로부터의 텐서플로우 선형회귀법 예제

이 정도 수준의 간단한 선형회귀볍 코드는 OpenAI의 chatGPT에게 시켜도 충분한 정보를 제공받을 수 있다. chatGPT 제공코드에서 회귀모델과 loss 함수가 for loop 문에서 중복되었기에 for loop 위의 회귀모델과 loss 함수를 # 즉 코멘트 처리하였다. 틀린점은 없어 보인다. 그림의 선형회귀법 예제에서 기울기 w를 미지수로 생각하고 회귀법(regression)으로 찾아보자. 미지의 웨이트 값 w는 처음에 random number 나 임의의 상수값을 준 상태에서 시작하면 된다. 한가지 주의할 점은 직선의 방정식을 결정하는 과정에서 2개 이상의 많은 수의 데이터들이 주어질 경우 이 점들을 대표할 수 있는 직선을 결정하게 되는 것이며, 이는 통계학이나 사회학 분야에서 많이 응용되는 기..

Colab에서 사전학습된 가중치를 사용 PyTorch에서 AlexNet을 실행해 보자.

컬러 색상의 227X227X3 이미지 입력으로 이루어지는 AlexNet의 아키텍츄어를 살펴보자. MAX POOL 알고리듬에 3X3 커늘에 스트라이딩 값 2를 적용하는 바 이는 오버래핑을 허용하는 알고리듬이다. 전체적으로 크기를 줄여나가는 Convolution 및 pooling 레이어들과 마지막 부분의 Fully Connected Layer 구조로 이루어짐을 알 수 있다. 그밖에 다층의 신경망 적용에 따른 큰 수의 생성 폭발 및 gradient 값의 굽속한 감쇠를 방지하기 위해서 활성화 함수 ReLU를 채택하고 batch normalization 기법에 의해서 컴퓨팅 부담을 최대로 낮춘 후 부족한 데이터를 인위적으로 늘리기 위한 data augmentation 알고리듬을 채택한다. data augmenta..

Colab에서 사전학습된 가중치를 사용 PyTorch에서 AlexNet을 실행해 보자.

컬러 색상의 227X227X3 이미지 입력으로 이루어지는 AlexNet의 아키텍츄어를 살펴보자. MAX POOL 알고리듬에 3X3 커늘에 스트라이딩 값 2를 적용하는 바 이는 오버래핑을 허용하는 알고리듬이다. 전체적으로 크기를 줄여나가는 Convolution 및 pooling 레이어들과 마지막 부분의 Fully Connected Layer 구조로 이루어짐을 알 수 있다. 그밖에 다층의 신경망 적용에 따른 큰 수의 생성 폭발 및 gradient 값의 굽속한 감쇠를 방지하기 위해서 활성화 함수 ReLU를 채택하고 batch normalization 기법에 의해서 컴퓨팅 부담을 최대로 낮춘 후 부족한 데이터를 인위적으로 늘리기 위한 data augmentation 알고리듬을 채택한다. data augmenta..

AlexNet Architecture 요약

본격적인 Image Classification의 시작이랄 수 있는 AlexNet 이후 성능이 비약적으로 개선된 네트워크들이 지속적으로 출현할 수 있었던 요인은 2012년 ILSVRC에서 발표된 AlexNet의 아키텍추어를 대상으로 파라메터 규모를 축소하기 위한 아키텍추어 개선에 크게 힘입은 듯하다. 아키텍츄어 관점에서, AlexNet에서부터 ResNet에 이르는 본격적인 이미지분석 네트워크에서의 아키텍추어는 소수의 CNN 레이어를 사용하는 MNIST 예제에 비해 그 규모 면에서 비교가 되지 않을 정도로 크며 세부 네트워크에서도 다양성이 포함되어 있다. 아래 그림에서처럼 ResNet18 기준으로 작성된 PyTorch 예제코드를 AlexNet으로 수정하여 인식률을 계산 체크해 보기로 한다. 지금 현재 사용되..

Colab에서 CNN을 사용한 CIFAR10 이미지 인식 Keras 코드 작성

MNIST 수기문자 이미지는 텍스트가 아니라 흑백 이미지이다. 일종의 흑백 상형문자로 보고 학습하는 것이다. tensorflow.keras를 사용한 MNIST cnn 알고리듬은 일반적인 컬러 이미지에 대한 학습이 가능하도록 알고리듬을 조금 수정하도록 하자. 참조: Convolutional Neural Network(CNN) https://www.tensorflow.org/tutorials/images/cnn MNIST 수기문자 판독의 경우 Keras 전용 데이터세트를 다운로드하여 사용했듯이 이미지 판독의 경우에도 이와 유사하게 준비된 CIFAR10 데이터 세트를 이용하자. MNIST와는 조금 다르게 10종의 50,000개의 학습용 이미지와 검증 테스트용 10,000개 컬러 이미지로 구성된다. MNIST ..