본문 바로가기

파이썬

[에어] InceptionV3으로 한국어(한글) 이미지 캡셔닝(Image Captioning) 모델 만들기 (파이썬/Colab) 에어 프로젝트 #6 InceptionV3으로 한국어(한글) 이미지 캡셔닝(Image Captioning) 모델 만들기 만약 인공지능이 경기장에서 축구를 하고 있는 사람의 이미지를 보고 '사람이 경기장에서 축구를 하고 있습니다' 또는 '경기장, 사람, 축구, 운동'과 같이 관련 단어나 문장을 자동으로 생성해준다면 어떠할까? 이러한 기능이 활성화된다면 시각장애인에게 도움을 줄 수도 있을뿐더러 데이터 검색, 스포츠 중계, 미술 치료 등 정말 많은 분야에서 활용될 수 있을 것이다. 이렇게 인공지능이 이미지를 보고 관련 단어나 문장을 만드는 것을 '이미지 캡셔닝(Image Captioning)' 이라고 하는데, 이 분야는 인공지능의 Text Generation의 한 분야이기도 하다. 또한, 이미지의 특징을 학습한.. 더보기
[에어] TextRank 로 크롤링한 뉴스 기사 요약 모델 만들기 (파이썬/Colab) 에어 프로젝트 #4 TextRank로 크롤링한 뉴스 기사 요약 모델 만들기 현재 온라인의 주요 플랫폼에서는 여러 분야의 다양한 정보들을 뉴스기사, 포스팅, 영상 등 다양한 형태로 제공하고 있다. 예를 들어, 금융 분야에 관심이 많아 평소에 뉴스 기사를 찾아서 읽는다고 한다면, 기사를 제공하는 플랫폼에 들어가서 '금융' 카테고리를 눌러 기사를 확인할 것이다. 하지만 매일 올라오는 기사는 한 분야에서도 수백건으로, 일일이 다 확인하는 데에는 분명 적지 않은 시간이 소요될 것이다. 이렇게 온라인 상에서 정보가 흘러넘치는 시대라도, 바쁜 삶을 살아가는 현대인들에게는 이마저도 일이 될 수 있다. 따라서 이번 에어 프로젝트에서는 네이버에서 제공하는 '금융-가장 많이 본 뉴스' 페이지에서 원하는 날짜의 기사를 크롤링.. 더보기
[에어] Transformer 모델로 오피스 챗봇 만들기 (파이썬/Colab) 에어 프로젝트 #3 Transformer 모델로 오피스 챗봇 만들기 요즘 여러 회사에서 인공지능 비서의 도입이 증가하고 있는데, 인공지능 비서는 주로 챗봇의 형태로 기본적인 대화부터 하루 일과, 해야 할 업무, 스케줄 등을 알려주곤 한다. 또는 특정 업무에 특화되어 단순 반복적인 업무를 대신하는 인공지능 비서가 있는데, 이러한 인공지능 비서는 사용자의 업무 효율을 높이곤 한다. 이번 에어 프로젝트에서는 트랜스포머(Transformer) 모델을 이용하여 간단한 대화가 가능한 인공지능 비서 챗봇을 만들어 보고자 한다. 그동안 지난 에어 프로젝트들에서 질문 텍스트가 어떠한 유형인지 구분하는 챗봇 모델을 만들었다면, 이번 에어 프로젝트에서는 회사생활과 관련된 질의에 대해 적절한 답변을 하는 챗봇 모델을 만들어 .. 더보기
[에어] 7가지 감정의 한국어 대화, 'KOBERT'로 다중 분류 모델 만들기 (파이썬/Colab) 에어 프로젝트 #2 7가지 감정의 한국어 대화, 'KOBERT'로 다중 분류 모델 만들기 사람에게는 다양한 감정이 있고, 얼굴 표정과 말로 그 사람의 감정을 추측할 수 있다. 또한 상대방의 얼굴 표정을 볼 수 없는 메세지 또는 SNS 채팅상에서도 문맥과 문장에 들어간 단어를 통해 어느정도 상대방의 감정을 예측할 수 있다. 그렇다면 컴퓨터와 같은 기계는 텍스트만 보고도 감정을 예측할 수 있을까? 요즘 심리 상담 챗봇 등 다양한 인공지능 대화 챗봇을 많이 접할 수 있는데, 사용해보면 인공지능이 텍스트 문장만 보고도 사람의 감정을 추측해 그에 따른 적절한 답변을 내놓는 것을 볼 수 있다. 이 인공지능은 어떻게 텍스트만 보고도 그 사람이 어떠한 감정인지 예측할 수 있는 것일까? 지난 에어 프로젝트에서는 'BER.. 더보기
이미지 분류하기 - 실습 【3】최근 CNN 응용 모델 이해하고 사용하기 이미지 분류하기 - 실습 케라스에서는 이미 학습이 완료된 이미지 분류모델들을 모듈로 공유하고 있습니다. 그래서 해당 모델들을 쓰는 법을 배워보겠습니다. 해당 모델들은 Imagenet이라는 데이터셋으로 학습을 하였고, 입력을 받을수 있는 이미지크기부터 RGB 배열까지 달라 사용에 유의해야합니다. from tensorflow.keras.applications import VGG16 from tensorflow.keras.applications import VGG19 from tensorflow.keras.applications import ResNet50 from tensorflow.keras.applications import ResNet152 from ten.. 더보기
이미지 분류하기 【2】CNN_합성곱 신경망 / 이미지 분류하기 이미지 분류하기 CNN으로 이미지를 분류해보자. try: %tensorflow_version 2.x except Exception: pass import tensorflow as tf #텐서플로우 2.x 실행 CNN을 돌리기에 앞서 텐서플로우(Tensorflow) 버전을 2.x으로 바꿔야 한다. 그래서 위에 코드를 실행하면 2.x로 바뀝니다. from tensorflow.keras import datasets, layers, models 모델을 작성하기에 앞서 keras 패키지를 호출한다. (train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data() 이미지 분류에 사.. 더보기
[머신러닝] 케라스로 RNN 순환 층 구현하기 (파이썬 코드) 1. 케라스의 순환 층(RNN) RNN은 Recurrent Neural NEtwork의 약자로, 시퀀스 모델인 순한 신경망을 의미합니다. 즉, RNN은 입력과 출력을 시퀀스 단위로 처리하는 모델인데요, RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로 보낼 때, 은닉층 노드의 다음 계산 입력으로도 결과값을 보낸다는 특징을 갖고 있습니다. 한편, 케라스로 이러한 순환 층을 구현할 수 있는데요, SimpleRNN 라이브러리를 이용하여 구현할 수 있습니다. SimpleRNN은 케라스에 있는 모든 순환 층과 동일하게 두 가지 모드로 실행할 수 있는데요, 전체 시퀀스를 반환하거나 입력 시퀀스에 대한 마지막 출력만 반환할 수 있습니다. 그렇다면, 간단한 RNN 모델을 만들어보겠습니다. f.. 더보기
[머신러닝] 데이터(레이블)를 벡터로 변환하는 방법 (파이썬 코드) 다중 분류 문제를 해결하기 위한 학습 모델을 만들 때, 학습에 사용할 데이터를 준비하는 단계에서 데이터를 벡터로 변환하는 과정을 거쳐야 하는데요, 아래와 같이 데이터를 벡터로 만들어주는 함수를 만들어서 사용할 수 있습니다. import numpy as np def vectorize_sequences(sequences, dimension=10000): results = np.zeros((len(sequences), dimension)) for i, sequence in enumerate(sequences): results[i, sequence] = 1. return results 만약, train_data = [1, 42, 323, 34,66, 85]라는 정수 인코딩이 된 데이터가 있다고 가정할 때, 이 .. 더보기
[자연어 처리] RNN 텍스트 분류 모델, 어떠한 활성화 함수 & 손실 함수를 사용하는게 좋을까요? - RNN으로 텍스트 분류 모델을 만들 때, 어떠한 활성화 함수와 손실 함수를 사용하는 게 좋을까요? RNN 구조를 이용한 텍스트 분류 문제는 모든 time step(시점 수 = 던어 수)에 대해 입력을 받고, 최종 출력 층에서 활성화 함수를 통해 하나의 답을 고르는 문제인데요, 이때 출력층에서 두 개의 선택지 중에서 답을 고르는 건지, 세 개 이상의 선택지에서 답을 고르는 건지에 따라 이진 분류 또는 다중 클래스 분류로 나누어집니다. 만약, 여기서 이진 분류의 문제로 해결을 하고 싶다면 활성화 함수는 Sigmoid 함수를, 손실 함수는 binary_crossentropy를 사용하는 것이 적절합니다. 반면, 다중 클래스 문제이 경우 활성화 함수를 Softmax, 손실함수를 categorical_cross.. 더보기
[머신러닝] GRU란? 케라스로 GRU 은닉층 추가하기 (코드) 1. GRU란? GRU(Gated Recurrent Unit)란 LSTM과 유사한 구조를 가지는 모델을 말하는데요, LSTM의 장기 의존성 문제에 대한 해결책을 유지하면서 은닉 상태를 업데이트하는 계산을 감소시킨 알고리즘을 말합니다. 또한 GRU의 가장 큰 특징은 출력게이트, 입력게이트, 삭제게이트를 가진 LSTM과 달리 업데이터 게이트와 리셋 게이트만 갖고 있다는 점입니다. LSTM과 GRU가 비슷한 구조를 가지고 있지만 어느 게 더 좋다고 말할 수는 없는데요, 다만 GRU에서 매개변수의 양이 적기 때문에 데이터의 양이 적을 땐 GRU를 사용하는 것이 좋고, 데이터의 양이 많다면 LSTM이 적절할 수 있습니다. 2. 케라스로 GRU 은닉층 추가하기 한편, 케라스를 이용해 GRU 은닉층을 추가하고 싶다면.. 더보기