728x90

프로젝트/2021 한이음(probono) 19

[프로보노프로젝트/딥러닝] 패딩 (Padding)

1. 패딩을 사용하는 이유 자연어 처리를 하다보면 각 문장(또는 문서)은 서로 길이가 다를 수 있다. 그런데 기계는 길이가 전부 동일한 문서들에 대해서는 하나의 행렬로 보고, 한꺼번에 묶어서 처리할 가능성이 존재한다. 다시 말해 병렬 연산을 위해서 여러 문장의 길이를 임의로 동일하게 맞춰주는 작업이 필요하다. (wikidocs발췌) 우리의 프로젝트 역시, 각 샘플의 길이가 너무나도 다르고 짧은건 한 줄, 긴 건 수십 줄이였기 때문에 패딩을 통해 일정하게 길이를 맞추어야겠다고 생각했다. 따라서 나는 from tensorflow.keras.preprocessing.sequence import pad_sequences, 케라스에서 제공하는 pad_sequences()도구를 사용하여 샘플의 길이를 일정하게 맞추..

[프로보노프로젝트/딥러닝] KOR_EDA 정리 (EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks)

2021.08.09 - [프로젝트/한이음(probono)] - 텍스트 데이터 양 늘리기 (Text Data Augmentation) 위 글에서 언급했듯 우리팀은 데이터셋의 종류가 적어 텍스트 데이터 셋의 개수를 증가시키는 코드를 개발해야 한다. 관련 연구로는 2019년 EMNLP에서 발표된 EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks가 있다. 논문을 읽어보았지만, 잘 이해가 되지 않는 부분은 https://catsirup.github.io/ai/2020/04/21/nlp_data_argumentation.html 를 참고하였다. 학습 데이터가 부족한 상황에서 데이터를 변형시켜 그 양을..

[프로보노 프로젝트] 데이터 전처리 개발 중간 백업 (data preprocessing)

4월부터 시작한 프로보노 프로젝트도 어느새 중간보고서를 제출하고 승인까지 받게 되었다. 프로젝트 초기에는 머신러닝 엔진을 개발하는 역할을 맡았지만, 후에 데이터 전처리를 하는 팀원을 도와 데이터 전처리 개발에 집중하게 되었다. 현재 데이터 전처리 개발은 어느정도 완성된 상태이기에 백업용으로 이 글을 작성한다. *개발내용 뿐 아니라 팀원들과 했던 커뮤니케이션과 문제 해결 과정, 회의내용도 어느정도 백업하려한다. 우리팀의 진행 방향성과 느낀점 멘토님께서는 우리가 개발을 하면서 이것을 해야하는 본질적인 이유에 대해 잊지 않는 것을 강조하셨다. 그래서 팀장님도 매번 우리팀이 전처리를 해야하는 이유에 대해 상기시켜 주셨고, 더 나아가 우리의 주제가 무엇인지 왜 머신러닝을 사용해야하는지 등 원초적인 목적에 대해 자..

[프로보노프로젝트/딥러닝] 텍스트 데이터 양 늘리기 (Text Data Augmentation)

데이터 전처리 개발을 어느정도 완료하고 다음 단계인 머신러닝 trian_data 학습과정으로 넘어가려 하니, 보이스피싱과 관련된 데이터 셋 개수가 너무 적었다. 우리가 사용할 수 있는 금융감독원에 공개된 보이스피싱 텍스트 데이터 셋은 168개 정도인데, 멘토님께 여쭤보니 머신러닝을 학습시킬 때 1만개 이하의 데이터는 의미가 없다고 하셨다. 따라서 현재까지는 머신러닝(딥러닝RNN) 엔진 개발 (1) 데이터 전처리 개발 (2)로 나누었던 팀원의 역할을 재분배하였는데, 그 중 나는 보이스피싱 데이터 셋의 양을 늘리는 프로그램 개발을 맡게 되었다. *또한, 기존 모델 RNN에서 우리의 프로젝트 진행 상황에 따라 로지스틱 회귀 모델로 변경하기로 하였다. 모든게 처음이라.. 잘 할 수 있을지 모르겠지만 우선 구글링..

[프로보노프로젝트/딥러닝] 자연어 처리(NLP) 토큰화(Tokenization)

*개인적으로 공부한 내용을 백업한 것으로 설명이 불친절합니다. 위키독스(https://wikidocs.net/21698) 를 보고 공부한 내용입니다. 프로보노 프로젝트에서 머신러닝 엔진을 정한 후 전처리 개발을 맡아 개발하던 중 전처리를 해야 하는 이유와 자연어를 토큰화하고 인덱싱해야하는 근본적인 이유에 대해 의문점이 생겨 개인적으로 공부하게 되었다. 또한 우리가 사용하고자 하는 데이터 셋은 한국어로 된 자연어이기 때문에 기존 영어 파이썬 자연어 처리(Natural Language Processing, NLP) 라이브러리를 사용했을 때 제대로 처리가 되지 않았다. 그 이유도 함께 알아보고자 하였다. 토큰화를 한다는게 뭐지? 토큰화란? 자연어 처리에서 크롤링 등으로 얻어낸 코퍼스 데이터가 필요에 맞게 전처..

[프로보노프로젝트/딥러닝] RNN과 LSTM

7월 2주차 프로보노 프로젝트 회의에서 머신러닝 모델(알고리즘)을 드디어 확정했다. STT의 결과물인 Text 데이터의 맥락을 파악한 후 보이스피싱인지 아닌지 판별해야하기 때문에, 순차적인 데이터 처리가 필요하다고 생각했고, RNN 모델이 적합하다고 판단하여 RNN으로 확정하게 되었다. 이 글은 RNN와 그 발전 모델인 LSTM 에 대한 공부가 필요하다고 생각해 작성한 글이며 개인적인 공부 백업용이다. 전통적인 신경망은 앞뒤 맥락을 파악하지 못한다는 한계점이 있다. 예를 들어, 영화의 매 순간 일어나는 사건을 분류하고 싶다고 해보자. 전통적인 neural network는 이전에 일어난 사건을 바탕으로 나중에 일어나는 사건을 생각하지 못한다. 1. RNN RNN (Recurrent neural networ..

[프로보노프로젝트/딥러닝] 딥러닝 기초

*개인적으로 공부하고 메모 형식으로 작성한 글이라 내용이 불친절합니다. 책) 딥러닝 첫걸음_김성필 인공지능>머신러닝>딥러닝 같은 데이터를 사용하면 다른 데이터를 넣었을 때 잘 인식하지 못할 가능성이 있다. 따라서 학습데이터와 입력데이터는 달라야 한다. 머신러닝 기법을 사용할 떄는 실제 데이터의 특성이 잘 반영되어있고 편향되지않은 학습데이터를 확보하는 것이 중요하다. 학습데이터와 입력데이터가 달라져도 성능차이가 나지 않게 하는 것을 일반화라고 하며 가장 중요하다 (이게 목적임) 과적합? 그래프를 보고 이해하는게 편한데, 들쭉날쭉하지만 대체로 일방적인 분포를 보이는 그래프가 있음 여기서 개체로 직선인 곡선을 그리면 100% 정확하진 않지만 어느정도 분포에 따름, 그러나 만약 들쭉날쭉 한 그래프 그대로 그리게..

[프로보노 프로젝트] ICT 수행계획서 작성

1. 개요 한이음 프로젝트에 참여하고싶어 마음에 드는 주제에 기웃거리다 보안과 인공지능을 합친 주제가 있어 신청하게 되었다. 주제는 "노약자를 위한 공개용 인공지능인 STT API 기반 유선전화 보이스피싱 방지 시스템" 이다. STT API와 라즈베리파이, 스니핑을 활용하여 보이스피싱을 예방하는 하드웨어나 소프트웨어 서비스를 개발하는게 우리팀의 최종 목표이다. 2. 수행 예상 기간 프로보노 프로젝트가 승인되는 시점 (4월 말) ~ 11월 30일 3. 프로젝트 소개 및 제안배경 이미 스마트폰 분야에서 AI로 통화내용을 분석해 전화금융사기(보이스피싱)를 잡아내는 앱이 출시되어 현재 사용하고 있으나 VoIP(인터넷 전화) 또는 일반 유선전화에는 보이스피싱을 예방하기 위한 하드웨어가 없는 실정이다. 따라서 일부..

728x90