목록머신러닝 (89)
꿈 많은 사람의 이야기
최근 머신러닝, 딥러닝 등의 데이터를 활용한 기술적 요구, 서비스적 요구가 증가하고 있습니다. 단순히 기존에 웹 서비스, 앱 서비스를 제공해주는 것을 넘어서 사용자 데이터를 수집하는 방법, 저장하는 방법, 처리하는 방법에 대해서도 꾸준히 이야기가 나오고 있죠. 저는 최근에 저 중에서도 '머신러닝 프로젝트는 어떻게 관리되고, 어떻게 운용이 될까?'에 대해 정말 많이 궁금했었습니다. 이러한 프로젝트는 비교적 최근에 발생하고 있어서 어떤 것이 체계적인지 알 수 있는 방법이 많이 없었습니다. 예를 들어 웹 개발 같은 경우에는 Man Month 등을 계산해서 비용 계산하고, WBS나 간트 차트 등을 이용한 일정 관리 이후에 기획이 나오고 기획에 따른 개발 진행 등등 이런 프로세스가 있는 것으로 경험을 했는데(저의..
지난 포스팅에 seq2seq 모델을 적용시켜서 기계 번역에 대해서 알아보았습니다. 인공지능 기반 자연어 처리 번역 즉, 기계 번역(NMT)은 규칙 기반부터 확률, 통계 기반으로 시작하여 현재 딥러닝을 활용해 기계 번역을 하는 역사를 가지고 있다는 것도 배웠죠 또한, 그 중심에 seq2seq 모델이 있다는 것도 배웠습니다. 하지만 seq2seq는 한계가 있습니다. 그 한계는 바로 번역이 잘 되지 않는다는 것이죠 그래서 어텐션 메커니즘이 나오게 됩니다. Attention Mechanism은 무언가에 집중한다는 개념입니다. 이 어텐션 메커니즘의 효과는 정말 어마어마합니다. 현재 자연어처리 분야에 있어서 어텐션 메커니즘을 안쓰는 곳이 없기 때문이죠. 또한 인공지능, 딥러닝 분야에서도 핫한 기술이기도 합니다. 이..
텐서플로 책을 보다가 햇갈려서 정리하는 부분이다바로 concat인데이해를 했다가도 햇갈리고 그런다특히 axis 부분..axis = 0이냐axis = 1이냐axis = -1이냐3차원이면 axis = 2까지..tf.concat을 정리하면서 다시 정리한다 https://www.tensorflow.org/api_docs/python/tf/concat참고 tensorflow를 import하고 t1, t2가 저렇게 있다고 가정하자 모양은 (2, 3)이 된다즉, 바깥쪽에 2개가 있고 안쪽에 3개씩 있는 2차원 매트릭스이다. 이제 이것을 concat할 것이다 tf.concat([t1, t2], axis = 0)을 하게 되면 결과는 아래와 같이[[1,2,3], [4,5,6], [7,8,9], [10,11,12]로 나온다..
이전에 캐글(kaggle) nlp인 toxic 데이터를 가지고 필사를 했습니다https://lsjsj92.tistory.com/448 이번에도 마찬가지로 toxic 데이터를 가지고 캐글 커널을 필사합니다.기존에 했던 것과 같습니다. 하지만 어텐션 메커니즘이 추가된 코드이고 glove 데이터를 이용해서 모델 weight를 제공해줍니다.특히 glove 데이터를 추가해서 word embedding을 하는 방법은 정말 많이 사용해서 이번 기회에 정리하고자 합니다. 언제나 그렇듯이 필요한 라이브러리르 불러옵니다keras를 사용했고 모델과 전처리에 필요한 Tokenizer 및 LSTM, Embedding, Dropout 등을 가지고 옵니다그리고 이번 모델에서는 Attention을 class로 만들어서 사용하기 때문..
본인은 딥러닝에 관심이 많다. 뭐 이론은 잘 모르지만 코드를 작성하고 뭔가 내 아이디어를 딥러닝에 접목시키고그리고 만들어내는 것이 너무 재밌기 때문그 중에서도 자연어 처리가 정말 재밌다.영상 처리는.. 개인 PC로는 너무 무리가 있다. 데이터도 그렇고 메모리 측면에서도 그렇고 ㅠㅠ 그러다가 일이 바빠서 한 동안 딥러닝을 못했었다.그리고 최근 회사가 안좋은 일이 생겨 어쩔 수 없이 강제로 쉬게 되었는데 마침 예약 주문한 책이 왔다 '텐서플로와 머신러닝으로 시작하는 자연어 처리'로지스틱 회귀부터 트랜스포머 챗봇까지전창욱, 최태균, 조중현님이 지으셨다. 전창욱님은 모두의 연구소에서 강연하는 것 한 번 봤었는데정말 잘하시더라.. 뭐 아무튼 나는 자연어 처리를 공부를 하다가 어느샌가 LSTM까지 공부하고 막혔었다..
어제 텐서플로와 머신러닝으로 시작하는 자연어 처리 책을 보면서 sequence-to-sequence 모델을 공부했습니다.챗봇을 만들 때 사용하던 모델이었는데 과연 케라스(keras)에서는 어떻게 사용되는지 궁금해서 공부를 했고지금 정리를 하려고 합니다. 이 자료는 케라스 코리아 운영자이신 김태영님의 블로그를 많이 참고했습니다!https://tykimos.github.io/2018/09/14/ten-minute_introduction_to_sequence-to-sequence_learning_in_Keras/ 기계번역(NMT, Neural Machine Translation)에서 많이 쓰이는 seq2seq 모델은 작성된 소스 문장들(source sentences)을 인코더(Encoder)를 이용해서 생각 ..
이번 커널 필사편은 7주차 이후로 또 다시 자연어 처리 편입니다이 커널은 toxic 이라는 데이터로 알려져 있는데요. 캐글에서 자연어 처리(nlp) 데이터 셋으로 많이 유명합니다.일종의 분류 문제입니다. 하지만 label이 1개가 아닌 6개를 가진 특이한 데이터 구조입니다 처음 캐글을 시작할 때 타이타닉 다음으로 이 데이터 셋으로 했었는데..당시에는 아무것도 모를 때라 그냥 너무 어렵다.. 하고 포기했었는데요처음 봤을 때보다 지금이 7개월 정도 흘렀는데 이젠 좀 눈에 보이네요 ㅎㅎ 필사를 하면서 이해가 되더군요제가 그 만큼 공부를 했다는 거겠죠 ㅎㅎ 바로 진행합니다 역시 처음에 필요한 라이브러리를 가져와줍니다keras, matplotlib, seaborn, pandas, numpy 등을 가져와줍니다lay..
이번 커널 필사편은 자연어 처리 부분입니다.당분간은 자연어 처리 위주로 글을 올릴 예정입니다캐글에 있는 자연어 처리 데이터 중 쉬운 편에 속하는 스팸(sparm or ham) 데이터를 가지고 해당 글이 스팸인지 아닌지를 딥러닝으로 처리해보겠습니다.https://www.kaggle.com/uciml/sms-spam-collection-dataset캐글 데이터는 여기서 구할 수 있습니다! 먼저 필요한 라이브러리를 불러옵니다파이썬의 판다스(pandas), numpy와 그래프를 그릴 matplotlib, seaborn을 불러옵니다.그리고 머신러닝 라이브러리 scikit learn(사이킷런)과 딥러닝 라이브러리인 keras(케라스)를 불러옵니다 데이터는 v1, v2 컬럼으로 각각 라벨, 문장으로 되어있습니다.하지..
최근에 텐서플로우로 배우는 자연어 처리 책을 보고 있습니다 평소에는 케라스(keras)만 위주로 써서 이 책의 내용의 코드와 잘 맞지 않는 부분이 있는데요이 책도 텐서플로우 안에 있는 keras 모듈을 사용하기는 합니다.tf.keras.layer 등을 사용하고 때에 따라서 tf.nn.rnn 등을 사용하기도 합니다. 하지만 완전 순수 keras 라이브러리와는 좀 사용법이 다르네요그 중 하나가 저는 model summary 부분이 정말 궁금했습니다. 케라스에서는 그냥 model.summary()를 하면 모델 요약이 나왔었는데요!tf.keras를 사용하다보니까 사용 방법이 좀 달랐습니다 model을 요약(summary)해서 shape 등의 정보를 볼 수 있는 방법을 소개합니다(tensorflow model s..
파이썬으로 딥러닝을 해봅시다!이번 포스팅은 파이썬(python)의 케라스(keras) 딥러닝 라이브러리를 이용해서자연어 처리(NLP)를 해봅니다. 데이터는 네이버 영화 평점 데이터를 활용합니다.사실 이 딥러닝을 한지는 꽤 되었습니다.모두의 연구소에서 진행한 모두콘(moducon)때에 자연어 처리 대회가 있었는데요그때 참여했던 소스입니다. 당시는 3등을 했습니다(정확도가 별로 높지는 않지만..)1, 2등 분들의 코드나, 아이디어를 얻고 싶어서 모두연에 요청도 했는데 ㅠ끝내는 받지 못했네요 ㅠㅠ아무튼 저는 아래와 같은 방식으로 자연어 처리 딥러닝을 진행했습니다. 먼저 형태소 분석기가 인식하지 못할 단어를 모아서 구축했습니다.자연어 처리에서 형태소 분석기는 자주 사용하는데요저는 은전한닢(mecab)을 자주 사..