핸즈온 머신러닝 - 전2권 - 사이킷런, 케라스, 텐서플로 2로 완벽 이해하는 머신러닝, 딥러닝 이론 & 실무, 3판 O'reilly 오라일리 (한빛미디어)
오렐리앙 제롱 지음, 박해선 옮김 / 한빛미디어 / 2023년 9월
평점 :
장바구니담기


모든 분야에서 Bible처럼 불리우는 책이 있습니다.머신러닝, 딥러닝에 관심이 있거나 업무에 활용하시는 분들은 이책을 들어보셨고 대부분 이책을 통해서 학습을 하시지 않았을까 생각합니다.이번에 같은 이름으로 [3판]이 나왔습니다. 기존 2판과 어떤점이 다른지는 뒤에서 설명드리겠습니다.책의 부제에서도 나와있는것 처럼 사이킷런, 케라스, 텐서플로2을 기술요소를 주로 사용하고 있고, google vertex등을 이용하는 부분도 뒤에 언급드리겠습니다.

책의 두께가 있다보니, 분철을 별도로 하지 않아도 기본적으로 책의 구성이 아래와 같이 되어 있습니다.

 

2판을 가지고 계신 독자분이 있으시면, 3판에서는 어떤 부분이 달라졌는지 가장 궁금하지 않으실까 합니다.

상세 변경 사항 : https://github.com/ageron/handson-ml3/blob/main/CHANGES.md 

아래 글에서도 있듯이, 최근에 별도의 책의 주제로도 출간되는, 그레이디언트 부스팅, 트랜스포머스 등 새로운 기술이 언급되는 부분은

이 책을 통해서, 최신의 기술을 사용하고 학습 할수 있습니다.

 

 

■ 대상독자 / 소개

·  이 책은 머신러닝에 관해 아는것이 거의 없다고 가정하고 내용이 구성됩니다. 그래서 독자 대상은 모든분들이 되실거 같습니다.

·  박해선님의 번역관련 책은 대부분 해당 git에서 쉽게 jupyter 노트북 형태로 제공되어서, 쉽게 동작을 살펴볼수 있습니다.

    https://github.com/rickiepark/handson-ml3

·  1부에서는 <머신러닝>에 대해서 설명하고 주로 사이킷런을 이용합니다.

·  2부에서는 <신경망과 딥러닝>에 대해서 설명하고 주로 텐서플로와 케라스을 이용합니다.

 

 

■ 1부 : 머신러닝에서 다루는 주제

·  기본적인 머신러닝의 개념

·  분류 / 모델훈련 / 서포트 벡터 머신 / 결정 트리 / 앙상블학습과 랜덤 포레스트 / 차원 축소 / 비지도 학습에 대해서 다룹니다.

·  보통 머신러닝의 다양한 기법을 학습하였지만, 실제 업무에서 어떻게 활용할지 모를때 좋은 사례가 제시됩니다.

이것을 기반으로 사용기법의 흐름을 잡고, 적용할 수 있는 기준선이 될것 같습니다. 

 

·  머신러닝의 종류에 대해서 

    - 훈련 지도 학습(지도, 비지도, 준지도, 자기지도, 강화학습)

    - 실시간으로 점진적인 학습을 하는지 아닌지 (온라인 학습과 배치 학습)

    - 사례기반 학습과 모델 기반 학습

에 대해서 항목별로 설명을 합니다. 예전에는 보통 개인적으로 지도, 비지도, 강화학습 보통 3가지 카테고리로 구성해서 설명하였는데 이 책에서는 좀 더 다양한 종류로 분리해서 범주를 소개합니다.

머신러닝의 첫 개념은 데이터를 어떻게 바라보는 관점이 매우 중요한데, 좋은 구성 같습니다.

 

·  머신러닝 수행시, 보통 고민하게 되는 나쁜 데이터 사례에 대해서 정의합니다.

아래의 항목은 머신러닝을 잘 수행했지만, 실제 active의 결과값이 예측치와 다른 경우 주로 고민하게 되는 부분입니다. 아래 사항을 알고 있다면, 시행착오를 줄일수 있다고 생각합니다.

 - 충분하지 않은 양의 훈련 데이터

 - 대표성 없는 훈련 데이터

 - 낮층 품질의 데이터

 - 관련없는 특성

 - 훈련 데이터 과대 적합

 - 훈련 데이터 과소 적합

 

 

# 2장에서는 "머신리닝 프로젝트 처음부터 끝까지" 라는 내용으로 보통 머신러닝의 회귀, 포레스트 특정 기법하는 관점보다는 전체적으로 처음 머신러닝을 업무에 적용해보고 싶을때의 막막함을 해소하고, 서비스에 적용하려고 할때 전체적인 process와 흐름 및 데이터를 수집하고, 가공하고 학습 이후에 무엇을 해야 할지 순차적으로 설명되어 지는 과정으로 되어 있어서 프로젝트를 하시는 경우 따라해야 할 기준선을 제공합니다. 뒤로 갈수록 검증검증, 튜닝, 테스트, 런칭, 모니터링, 유지보수에 대한 항목으로 구성되어 있어서 크게 흐름을 파악하기 좋은 부분입니다. 이론적인 것 뿐만이 아니라, 코드를 통해서 검증하는 예시도 포함되어 있습니다.

 

 

# 3장 "분류" 에서는 가장 보편적으로 사용하는 MNIST (70,000개의 작은 숫자 이미지) 데이터 셋을 통해서 학습합니다.

사이킷런을 통해서 이미지 분류를 진행합니다. 사이킷런의 SGDClassifier클래스를 이용해서 확률적 경사 하강법(SGD) 분류기로 시작해봅니다. 이 분류기는 매우 큰 데이터셋을 분류하는데 효율적으로 처리합니다. cross_val_score()함수를 통해서 모델을 평가합니다.

 

·  모델에 대해서 선형회귀 부터 진행합니다. 모델에 대해서 훈련시키는 방법중에 1) 닫힌상태 방정식 2) 경사 하강법의 경우가 있습니다.

선형회귀을 통하여 정규방식식을 통한 해석적인 방법, 계산복잡도, 경사하강법(GD)를 통해서 최적의 해법을 찾을수 있는 최적화 알고리즘을 이용합니다. 경사하강법은 매우 중요하기 때문에, 이 책에서도 다양하게 설명하고 있습니다. 배치경사 하강법, 확률적 경사 하강법, 미니배치 경사 하강법에 대해서 추가적으로 구성되어 있습니다.

 

·  SVM이라고 불리우는 서포트벡터 머신의 내용은 5장에 설명되어집니다. 선형, 비선형분류, 회귀, 특이치 탐지에서도 사용 할 수 있는 다목적 머신러닝 모델입니다. SVM은 중소규모의 비선형 데이터셋(수백에서, 수천개의 샘플), 특히 분류작업에서 장점을 가집니다.

다양한 분류를 그림을 잘 구성되어 있습니다. SVM을 분류가 아닌 회귀에 적요하는 내용도 설명되어 집니다.

 

·  머선러닝중에 트리는 이해관계자에게 가시적으로 설명이 쉬운 알고리즘은 결정트리가 있다. 분류와 회귀 작업 그리고 다중 출력작업까지가능한 머신러닝 알고리즘 입니다. 또한 매우 복잡한 데이터셋도 학습할수 있는 강력한 알고리즘입니다.

최근에는 자주 사용하는 랜덤 포레스트(7장) 의 기본 구성요소이기도 합니다. 결정트리을 DecisionTreeClassifier를 통해서 훈련합니다.

 

회귀에 대한 문제는 DecisionTreeRegressor를 통해서 실습합니다. 우리가 일반적으로 알고 있는 tree의 의사결정은 아래 그림처럼 결정됩니다.

 

·  차원축소를 통한, 수백만 샘플중에 다양한 특성으로 인한 훈련이 느려지는 현상을 대처하기 위한 방법등이 소개됩니다. 매드폴드 학습,  주성분 분석등이 8장에 구성되어 있고, 9장에서는 비지도 학습 중 군집, k-평균 알고리즘, DBSCAN등의 내용으로 구성되어 있습니다. 

 

 

■ 2부에서는 신경망과 딥러닝에 대한 내용으로 구성되어 있습니다.

· 신경망은 딥러닝의 핵심입니다. 인공지능의 시작인 퍼셉트론에 대한 이론적인 부분, tanh, ReLu함수 둥이 소개됩니다. 

인공 신경망을 만들고, 훈련하고 조금더 복잡한 심층 신경망을 훈련해봅니다. 심층 신경망의 출력층이 멀어질수록 그레이디언트가 점점 작아지거나 커지는 현상에 대해서 해결방법을 알아봅니다. 

·  12장에서 텐서플로의 구조 및 사용법, 타입변환/변수/다른 데이터구조, 사용자 정의, 주로 사용하는 함수에 대해서 설명되어 있습니다.

·  13장에서 대용량 데이터셋을 이용하기 위해서는 텐서플로 자체의 데이터 로드 및 전처리 API인 tf.data를 사용합니다. 멀티스레드와 큐를 사용하여, 여러 파일에서 동시에 읽고, 샘플을 셔플링하거나 배치로 만드는 등의 작업을 수행할수 있습니다. 

프로토콜 버퍼를 이용해서 텐서플로에서 사용하는 다양한 내용이 있습니다.

·  합성곱 신경망은 14장에 소개 됩니다. CNN약어로 사용되는데, 시각분야에 국한되지 않고, 음석인식, 자연어처리 (NLP)와 같은 다른 작업에서도 많이 사용됩니다. 해당 부분은 케라스를 통해서 실습을 진행합니다. 

CNN에 가장 중요한 구성요소인 합성곱 층에 대해서 자세히 설명합니다.

합성층 이후에, 풀링 층에 대해서 설명하고, 케라스로 구현을 합니다. Lenet-5, alexNet, GoogLeNet, VGGNet, ResNet, Xception, SENet 등에 대해서 다양한 합성곱층을 알수 있습니다. 

·  RNN(네트워크 순환 신경망)에 대해서 살펴보고 역전파하여 네트워크를 훈련하는 내용으 15장에 설명되어집니다.

RNN훈련하고, 시계열 예측을 진행합니다.

 

·  대규모 텐서플로우 모델 훈련과 배포를 위해서, 다양한 예시가 제공됩니다.

Docker컨터네너에서 TF서빙 실행하기, REST-API를 이용하는 방법, gRPC API로 TF 서빙에 쿼리하기, 구글클라우드에 버텍스AI를 활용해서 배포하는 실습하는 내용도 있어서, 새로운 내용이 포함되어서 관련 내용이 궁금하셨으면 도움이 많이 됩니다.

매장의 마지막에 연습문제가 제공 되고 있어서, 개념을 다시 잡을수 있고, 3부 부록에서 연습문제 정답도 있지만 부록 B,C,D,E에 있는 내용은 하나의 별도 책으로 낼 정도로 일반 책에서 다루지 않는 내용이 포함되어 있습니다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
인간 vs. AI 정규표현식 문제 풀이 대결 - 24개의 정규표현식 퍼즐로 알아보는 ChatGPT, 코파일럿 활용법
데이비드 머츠 지음, 김모세 옮김 / 제이펍 / 2023년 10월
평점 :
장바구니담기


책의 제목부터 매우 흥미롭습니다. AI와 대결이라니요.

보통 ChatGPT, 코파일럿등 AI를 통해서 가장 개발적으로 처음 접근하는 화두가 정규표현식입니다.

컨셥에 딱 맞죠. 예전에도 어딘가에서 내가 원하는 문자열 형태를 샘플로 여러개 입력을 하면 그에 맞는 정규표현식을 제공하는 사이트가 있을 거라고 생각을 했는데, 생각보다 그런 서비스를 하는 사이트는 없었습니다.

자주 사용은 안하는데, 딱 필요할때가 있는 정규표현식을 이번 기회에 이책을 통해서 좀 더 잘 활용 할수 있을 것 같은 생각이 들었습니다.

 

정규표현식을 대부분의 언어에서 지원을 합니다. grep, sed, AWK, perl 뿐만 아니라, Java, .net. javascript, GO, Rust 등등

생각해보면, 이렇게 다양한 언어에 대해서 공통적으로 적용할 수 있는 기능적인 부분인 정규표현식은 잘 활용하면 더욱 더 강력한 기능을 가지게 됩니다.

 

해당 책의 정규표현식 실습은 python의 re 표준 라이브러리로 실습환경을 구성합니다.

책의 서브 타이틀로도 나와 있는 것처럼, 24개의 퍼즐과 같은 패턴을 가지고 ChatGPT, 코파일럿을 통한 활용법을 학습합니다.
책의 표지가 동양풍의 그림이여서, 저자분이 동양분이신줄 알았는데, 저자분은 "데이비드 머츠" 이십니다.

시작하며에 있는 글 (이 책의 목적 및 다루는 내용에 대해서 가장 잘 요약하고 있는 글입니다.)
AI기반 도구들의 만들어내는 결과는 매우 놀랍다. 하지만 동시에 수많은 실패를 보면서 매우 어리석다는 것도 이해해야 한다.
바로 이것이 이 책의 주요 목적이다. 정규표헌식을 사용한 퍼즐들은 컴퓨터 프로그래밍의 모든 영역 중에서도 인공지능의 특이한 행동을 이해하기에 특히 적합하다. 

 

 

■ 퍼즐에 대해서

·  퍼즐에 대해서 저자분이 생각하는 정규식 풀이와 AI를 활용한 풀이법을 비교하가면서, 대결이라는 컨셥을 진행합니다.

<저자생각> vs <AI생각> 이렇게 2개를 직관적으로 비교하는 방식으로 하나의 주제를 설명하게 됩니다.

 

 

■ 수량자와 특별한 하위 패턴들

·  x로 시작하고 y로 끝나는 모든 단어를 매치하라(퍼즐1)

가장처음 나오는 예시로, 보통 전화번호 및 입력 속성을 체크하기 위해서 가장 보편적으로 사용하는 패턴이다.

단어를 구분짖기 위한 방식등을 포함해서, 해당 요청을 처리할수가 있다.

·  책의 AI코드 추출은 아래와 같이 영어로 chatgpt를 이용해서 결과물을 도출합니다.

 프롬프트 명령어는 한글이 아니라 영어로 입력하게 책이 구성되어 있다. 첫 예시라서 영어가 간단하지만 뒤로 갈수록 입력하는

문장의 길이는 길어집니다. 실제 이정도의 영어를 입력해서 원하는 결과를 도출하게는 어려울것이라고 생각합니다.

그래서 책을 통해서 간접체험하는 것이 반대로 생각하면 더 유용할 것 같습니다.

그리고 실제 ChatGPT에서 제공하는 결과 답변은 책과 다르게 제공 될 수 있으니 참고 하시면 됩니다.

첫 퍼즐에서 저자분은 findall()을 통해서 matching을 하였는데, finditer()에 대한 부분도 적용하면 좋은 가이드를 함께 제공합니다.

 

평균적으로 책에서 코파일럿 보다는 ChatGPT에서 정규식에 대해서는 조금 더 의미있는 도움되는 코드가 제공되는것 같습니다.

 

 

■ 구성 포맷

·  정규표현식을 이용해서 구성 포맷을 파싱할수 있다.

정규표현식을 수행해서, python의 딕셔너리 구성으로 반홤받을수 있다.

dict(re.findall(~~~)) 을 이용하는 방법을 이용하면 된다.

 

·  아래와 같은 시그널을 분석하는 상태시쿼스에서 유효하게 인코딩된 신호들을 식별하는 예시등을 통해서 일반적인

text형태의 구성, 연습에서 탈피하는 예시등이 좋았습니다.

 

■ 흥미로운 주제들

·  chapter4장에서 일반적으로 python에서 제공하는 함수를 정규표현식으로 작성하는 시도을 해봅니다. 

흥미로운 주제인것 같습니다.

≫ str.count() : 긴 문자열 안에 하위 문자열을 검색하는 기능

 포커플레이를 통해서 몇가지 시나리오를 정규표현식을 통한 기능 만들어보기

·  스트레이트, 플러시 카드 패 식별하기

· 포터 카드 패를 포 카드와 매치하기

· 포커 카드패를 풀 하우스와 매치하기

· 포커 카드 패에서 트리플, 원 페어를 매치하기

포커에 대해서 기본적으로 게임 방식을 아시면 조금 더 흥미로운 주제로 생각이 됩니다.

이러한 부분도 정규표현식으로 의도한 결과물을 추출해 볼수 있다는 것은 조금은 다른 관점으로 정규표현식을 접근하고

활용할수 있는 계기를 제공해 줍니다.

 IPv4주소 테스트 하기

조금은 현실적인 정규표현식 예시도 다양하게 연습하고, 실제 어떤것이 정답은 없지만 원하는 결과를 체크할 수 있는

다양한 시도를 저자 관점 & AI부분을 통해서 자기가 이해하고, 사용하기 편한 코드를 도출해 나갈수 있습니다.

 

■ 정규식에 기본적인 시작

·  책의 내용을 처음부터 보기 보다는 뒤에 별도로 구성된 정규표현식의 소개 내용을 먼저 살펴보시고, 책의 내용을 학습한다면

더 나은 효과를 얻으실수 있습니다. 기본적인 내용부터 잘 설명되어져 있습니다.

 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
개발자의 하루를 바꾸는 코파일럿 & 챗GPT - AI 코딩 도구와 페어 프로그래밍하기
마이클 D. 캘러핸 지음, 정원창 옮김 / 한빛미디어 / 2023년 9월
평점 :
장바구니담기


이 책을 궁금해 하시고, 관심이 있는 독자분은 개발자일 확율이 높습니다. 챗GPT는 범용적으로 사용되는 AI도구이지만, 코파일럿은 개발을 하는 코드적인 부분이 많기 때문입니다. 처음 copilot이 나왔을때 코드에 대한 어시스턴트를 제공하는 것을 보고 매우 놀랐습니다.

벌써 출시된지 1년이 넘어가고 있습니다. 그만큼 기술은 더 안정적이고 많은 요즘은 살펴보지 못했지만, 많은 변화가 있을것 같습니다.

 

책에서는 한가지 Copilot만 사용하지 않고 챗GPT도 함께 개발적인 입장에서 바라보고, 내용을 설명하고 있습니다.

코파일럿과 챗GPT는 소프트웨어 개발자의 작업을 돕도록 설계된 AI기반 도구입니다. 두 도구 모두 머신러닝 알고리즘을 사용해 지능적인 제안과 지원을 제공하지만, 각각 개발 과정에의 서로 다른 측면을 위해 만들어졌습니다. 주요 차이점 한가지는 코파일럿은 코드완성과 제안에, 챗GPT는 자연어 처리에 초점을 둡니다.코파일럿을 사용하면 주요 코드 스내펫을 생성할수 있고, 챗GPT를 사용하면 텍스트 응답이나 코드를 생성할수 있습니다. (p.27)

 

 

코파일럿은 우리가 많이 사용하는 github에서 제공하고 있습니다. github를 MS에 인수했기 때문에 결국 MS가 생성하는 AI라고 볼수도 있습니다. 우리고 공개 저장소에 저장하고 있는 다양한 github의 소스를 기반으로 학습한 데이터를 제공한다는 것은 너무 좋은 데이터를 이용한 인공지능 학습이 가능할 것입니다. 하지만 public 저장소에 있는 소스 코드는 어느 누구나 접근할수 있기 때문에, 어느 기업이나 받아다가 사용할수 있는 데이터 이기도 합니다.

책에서 사용하는 prompt명령어는 아래에서 다운로드 가능합니다.

https://walkingriver.gumroad.com/l/pair-programming-bonus

 

■ copilot 관련 비용 관련

·  무료 trial을 제공합니다. 다만 유료로 이제 상용화 서비스로 변경이 되었습니다.

·  https://docs.github.com/ko/copilot/overview-of-github-copilot/about-github-copilot-for-individuals

 

· 다양한 IDE를 제공하고 있습니다.

https://docs.github.com/ko/copilot/getting-started-with-github-copilot?tool=jetbrains

· 테스트 환경은 VSCode를 활용하여서 구성합니다.

 

■ 책에서 다루는 사항

· 여러가지 AI분야가 있지만, 아래의 2가지 사항에 대해서 설명하고 있습니다.

· 책에서는 AI찬양을 하지 않습니다. AI도구의 한계를 설명하고, 라이센스 문제, 윤리적인 사항등을 사전에 언급해주는 것이 단순히 무조건 좋다라는 것을 설명하는 책이 아닌것 같아서 막연하게 좋다 라고 생각하는 관점에 대해서 우선적으로 주의점을 잘 인지 할수 있게 구성되어 있습니다. 

· 책의 구성에 재미있는 부분이 있습니다. 코파일럿과 ChatGPT 한가지만 이용하는 것이 아니고, 2개를 적절히 사용하고 같은 주제에 대해서 검색을 통해서 하나하나 좋은점, 차이점을 알아보고 비교해보고 각 AI툴에 대해서 장단점을 파악할수 있습니다.

아래 그림처럼 코파일럿에 조회한 내용도 실습해보고, ChatGPT의 내용도 함께 사용하면서, 같이 경험하는 것은 추후 활용시에 도움이 됩니다. 기존에 알고 있던 코드나 경험이 있는것은 상대적으로 코파일럿이 직관적으로 코드를 제공하니 더 편하게 느낄수 있고 약간의 설명이나 서술형으로 개념을 다시 잡고 싶은 경우는 ChatGT가 더 도움이 될수 있을것이고 개개인 마다 느끼는 것이 다르지만 사용해보면서 상황에 맞게 사용할수 있는 경험을 노하우가 늘어날 것으로 생각됩니다.

· 책에서 소개되는 주제는 아래와 같습니다.

언뜻 보면 java, python등 언어에 대한 실제 코드에 대한 부분은 없지만, 책의 주제를 실습하다 보면, 어떻게 AI툴을 사용할지 어떻게 활용할지 경험하는 예제로 충분한 내용이 제공됩니다. 보통 많이 어려워하는 정규표헌식의 경우도 재미있게 우리가 원하는 결과물을 도출하는 과정으로 구성되어 있습니다. 샘플 데이터 생성 같은 부분은 우리가 어떻게 쉽게 테스트 할수 있는 dummy파일을 생성하고 머신러닝등에도 활용할수 있는 부분으로 활용을 할수도 있습니다. 프로젝트 관리등에 대한 부분은 개발적인 부분은 아니지만 추후 다른 방향으로 어떻게 AI툴을 활용할수 있는지 알게 됩니다.

2장 셸 스크립팅 명령
3장 깃 명령
4장 일반적인 알고리즘
_4.2 배열 조작
_4.3 문자열 조작
5장 RxJS 학습하기
6장 앵귤러 httpClient
7장 정규 표현식
8장 데이터 생성
_8.1 로렘 입숨 텍스트
_8.2 미국 대학교 리스트
_8.3 임의의 고객 리스트
_8.4 색상
_8.5 영화 제목
_8.6 자동차 제조사와 모델
_8.7 개 품종
_8.8 카드 덱
_8.9 우노 카드 덱
_8.10 식료품 리스트
_8.11 주식 기호 리스트
_8.12 주식 가격 흐름
_8.13 정리


9장 애자일 프로젝트 관리
_9.1 프로젝트 콘셉트


10장 애플리케이션 만들기
_10.1 아이오닉 앱 개발 시작하기


11장 유닛 테스트
_11.1 대상 서비스
_11.2 서비스 API
_11.3 테스트 프레임워크
_11.4 코파일럿 테스트
_11.5 챗GPT 테스트
_11.6 HTTP 호출 테스트
_11.7 정리

이 책의 가장 큰 장점은 Copilot, ChatGPT 2개를 한꺼번에 경험하면서 조금 더 활용도를 높이기 위한 비교 기법과 각 AI도구의 다른 결과물을 통해서 나에게 맞는 방식으로 AI툴의 활용도를 높이는 방법을 제공합니다. 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
모두의 한국어 텍스트 분석 with 파이썬 - 기초부터 챗GPT까지, 누구나 쉽게 시작하는 자연어 처리 모두의 시리즈
박조은.송영숙 지음 / 길벗 / 2023년 5월
평점 :
장바구니담기


사용자의 수집데이터의 사이즈에 차이는 있지만, 서비스를 하는 입장에서는 데이터는 무조건 저장되고 누적됩니다.

로그인이 필수인 개인화된 페이지도 있고, 로그인이 없는 누구나 사용하는 서비스 페이지들도 있습니다.

데이터는 User들이 신규로 생성하는 데이터도 있지만, 통계성의 성격을 가지는 데이터들, 정형데이터/비정형데이터등 다양한 성격의 데이터는 어느 회사나 보유중입니다.

 

그러면 우리는 이것을 가지고 새로운 요구사항을 구현할수도 있고, 조금 더 나은 서비스를 위해서, 새로운 Value를 찾아보기 위해서 다양한 시도를 합니다. 여기서 중요한 부분은 대부분의 데이터가 한글이라는 부분입니다.

 

일반적인 데이터 분석책이 현재 많이 출간되어 있고, 대부분 파이썬을 이용해서 구현을 많이 합니다.

이 책의 제목은 "모두의 한국어 텍스트 분석" !! 이다.

 

저자분도 이책의 집필시에 아래와 같은, 누구나 궁금해 하는 사항에 대해서 고민하고 이 책을 구성하셨던 부분이 처음에 눈에 들어왔습니다.

 

저자는 집필의도를 통해서 우리가 이 책에서 얻을 수 있는 사항은 아래와 같습니다. 

  • 텍스트 분석을 하는 방법을 전반적으로 알아봅니다.
  • 한국어라는 언어에 대해서 무슨 차이가 있고, 한국어를 조금 더 잘 활용해 볼 수 있을 것이다.

 

■ 책이 실습구성은 풍성

· 의지만 있으면, 학습할수 있는 충분한 구성이 되어있습니다.

· 코랩으로 바로 실행 지원

https://github.com/pytextbook/pytextbook

  소스 코드를 바로 코랩의 실행하는 환경을 제공하는 것은 생각보다 장점이 많습니다. runtime으로 실습하는 것은 시간절약에 많은 도움이 되고 궁금한 것을 바로바로 실습해볼수 있어서 독자 입장에서 매우 만족합니다.

 

· 유투브 영상도 제공합니다.

저자분이 책의 내용을 전부 설명하는 것은 아니지만, 책과 중복되는 부분도 많고 충분히 시작하는데 도움되는 영상 목록입니다.

https://www.youtube.com/playlist?list=PLaTc2c6yEwmp35y9Z868VlV9NQpG-eBb6 

 

 

■ 환경구성과 파이썬 기본 문법

· 1장~3장까지 내용 구성이 됩니다.

· 코랩은 데이터 분석하는데 너무나 많은 편리성을 제공합니다. 한번만 경험하면 쉽게 사용할 수 있습니다.

· 파이썬의 내용이 좋았습니다.  파이썬의 모든 내용을 다루지 않습니다.(파이션책이 아니기 때문에)
 이 책은 텍스트 분석을 위한 "파이쎤 문자열"에 대해서 상세히 설명합니다. 이런 부분이 목적에 맞게 문자열을 더 자유롭게 다루는 방법이 있어서 책의 목적에 맞는 내용 구성이라고 생각합니다.

· 판다스(https://pandas.pydata.org/), 넘파이 (https://numpy.org/)는 데이터분석의 기본 사항입니다. 

데이터 분석하는 과정에서 데이터를 axix축을 어떻게 잡는지도 중요하고, 분석하려고 하는 다양한 데이터를 row,colume구성으로 data조회를 하는 과정도 필요합니다. pandas는 sql쿼리문으로 조회하는 부분에 많은 것을 커버할수 있습니다. group by의 역활도 일반 쿼리보다 쉽게 구성하여서, 조금 다른 관점으로 장점도 많이 있습니다.

 

핵심되는 요소만 설명하고, 너무 과하지 않게 설명을 합니다. loc, iloc, series등에 대해서 설명을 하고, 가장 많이 사용하는 개념 및 함수에 대한 설명을 통해서, 이정도만 알고 있으면 충분히 데이터 분석을 경험 할수 있습니다. 추가적인 내용 및 더 궁금한 부분을 연관해서 찾아보면 추가적인 함수들도 학습 할수 있는 베이스 라인을 만든다고 보시면 될 것 같습니다.

 

 

 

■ 4장 : 단어 가방 모형과 TF-IDF

· 단어가방 모형 : 단어순서를 고려하지 않고, 중복발생 빈도를 중요하게 취급하는 방법

여기서는 사이킷런(scikit-learn)을 활용한다. 해당 라이브러리는 머신러닝을 하는데 기본적으로 사용됩니다.

우선 문장을 분석하는 것을 시도해봅니다. 문장은 공백으로, 콤파등으로 구분되어 질수 있습니다. 이것을 단어로 형태소 분석해서 숫자를 올리면 특정 단어가 많이 나오는 것을 분석해볼수 있습니다. 이것은 단어가방모델이고 여기서 조금더 추가하여서 단어의 위치에 따라서 의미가 달라지는 것을 다양한 기법을 적용해서 결과물을 도출해봅니다.

n-gram(단어 어절을 구성하는 단위), min_df, max_df를 통한 빈도수 설정, max_features (학습 단어개수제한), stop_word(불용어 제거)등을 사이키런에서 제공해주는 옵션값을 사용해서 데이터 분석을 합니다.

· 사이킷런을 TfidVectorizer를 통해서 TF-IDF변환을 통해서, 단어빈도, 문서빈도, 역문서빈도등을 적용하면서 각 문장간의 연관성을 추출합니다. 보통 결과를 이렇게 수치로 표현해서 가중치를 파악합니다. 이런 실행결과는 데이터 분석에서 많이 보는 결과입니다.

이러한 내용들이 하나하나 설명되어지면서, 분석에 대한 상세 설명이 되어집니다.

 

■ 5장. 연합뉴스 타이틀 주제 분류

· 소개하는 예제가 매우 관심을 가지게 됩니다. 업무에서도 어떻게든 적용해볼수 있지 않을까? 생각해볼수 있습니다. 제목 즉 타이틀은 모든 게시글에 있기 때문이죠. 이러한 데이터를 어떻게 텍스트 분석을 하고 어떠한 기술/라이브러리를 사용해서 어떠한 방식으로 구현되어 있는지 살펴보겠습니다.

 

아래 목차를 보면, "분류과정", "전처리", "불러오기" 등이 있습니다. 데이터를 처리하는데, 우리가 보유하는 데이터를 그냥 바로 분석할수 없습니다. 전처리라는 역활은 매우 중요한 과정이며, 이러한 과정은 데이터를 바라보는 관점을 달리 할수 있는 중요한 부분이라고 생각합니다. 

주요하게 살펴볼 사항은 아래 2가지 입니다.
· 간단한 텍스트 분류를 통해 머신러닝 알고리즘이 학습할수 있도록 단어를 수치화 하는 방법

· 머신러닝 모델을 통해 학습 및 예측하는 방법

· 사용되는 데이터
L (DACON, 데이콘 AI경진대회 플랫폼)에서 KLUE:한국어 자연어 이해 벤치마크 데이터 데이터를 이용합니다.

https://klue-benchmark.com/tasks/66/overview/description

 

· 라이브러리 import

pandas, numpy등은 기본적으로 import를 하는 사항이라고 보면 되고, 
한글처리를 위해서 아래 사항을 추가한다.

koreanize-matplotlib : 매트플립 차트에서 한글이 깨지지 않고 표현가기 위해서 설치

konlpy : 한국어 형태소 분석을 위해 설치

· https://konlpy.org/en/latest/

 

한국어에 대해서, 동일한 문장이여도 형태소 분석의 차이로 인해서 구문에 대한 파싱은 조금씩 다르게 표현됩니다.
책에서는 Okt를 사용해서 예제를 진행합니다.

· 당연히 학습, 시험 데이터 세트 분리를 진행하고 
해당 예시에서는 학습과 예측하는 기법으로는 사이키런의 랜덤 포레스트를 사용해서 진행합니다.

 

▶ 6장에서도 5장과 비슷한 과정이 있습니다. 
6장에서는 "국민청원 데이터 시각화 분류"를 진행합니다. 코랩으로 데이터를 호출해서 처리할수 있지만

pandas를 통해서도 데이터를 호출해서 사용할수 있습니다.
KoNLPy와 soynlp를 통해서 특정 형태소를 추출/제거를 수행하며, 머신러닝으로 텍스트 데이터를 이진 분류하는 내용이 있습니다.

· 6장에서는 조금 더 다양하게 pandas를 사용합니다. 조건을 걸어서 분류를 제한하고 merge등 조금 더 다양한 데이터 구조화를 연습해볼수 있습니다.
머신러닝에 대해서 이론적인 사항도 필요한 부분에 대해서 과하지 않게 핵심이 잘 정리되어서 설명되어 집니다.

 

 

■ 7장 ‘120다산콜재단’ 토픽 모델링과 RNN, LSTM

· 120다산콜재단 데이터를 토픽별로 분석시각화를 진행해봅니다.

· RNN, LSTM을 통한 모델링을 진행해봅니다.

· pyLDAvis를 이용해서 시각화를 연습해보면서, 기존에 멧플립등과 비교해보는 연습을 합니다

 

 

분석과정에서 데이터를 토픽별로 분류를 하고 난 후에 딥러닝 방법중에 하나인 순환신경망(RNN)모델로 학습해서 분류과정을 거칩니다.

잠재 디리클레 할당 (LDA)를 통해서 주어진 문서에 대해 각 문서에 어떤 주체(토픽)들이 있는지 서술하는 확률적인 토픽 분류 기법을 이용합니다. 사이킷런을 이용해서 해당 분류를 실행합니다.

 

 

▶ 8장의 내용은 조금더 현실감 있는 데이터 샘플을 이용해서 실습을 합니다.

많이들 이용하시는 인프런의 댓글을 가지고 텍스트 분석을 하는 과정은 매우 공감이 됩니다.

여기서 사용하는 데이터의 댓글을 실제 주변에 작성하신 분들이 있을수 있기 때문입니다.

과정은 비슷합니다. 해당 데이터를 어떻게 분류하고 학습시킬것인지 고민해야 합니다. 머신러닝을 통한 분류를 할지 딥러닝 기법을 사용하지 정하고, 학습데이터와 실제 예측을 위한 테스트 데이터르 분류해 놓아야 합니다.

가시적인 검증을 위해서 차트 라이브러리를 사용합니다. 인프런 분석시에는 KMeans 군집화를 통해 머신러닝 비지도 학습을 적용해보았고, 클러스터링의 분류 모델을 통해서 지도학습을 통해서 예측도 진행합니다.

 

이 책의 특징은 일반적으로 외부에 오픈된 dataset을 이용하는 것 보다 조금 더 한국어가 기본인 데이터를 활용하는 것이 매우 좋았습니다.

사례로 드는 예제는 주변에서 실제 익숙한 데이터를 사용해서, 데이터 분류 및 예측의 결과 값이 한글로 되어 있어서 영어로 분석하는 예시와는 또 다른 경험을 제공합니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
AWS 기반 데이터 과학 - 엔드투엔드, AI/ML 파이프라인 구현하기 | 아마존 클라우드 컴퓨팅 분야 베스트셀러
크리스 프레글리.안티 바르트 지음, 서진호.최미영 옮김, 이용혁 감수 / 한빛미디어 / 2023년 4월
평점 :
장바구니담기


AWS에 수많은 서비스가 있습니다. 기본적으로 가장 많이 사용하는 EC2, S3, RDS등 웹서비스를 구성하기 위한 서비스 이외에 정말 많은 서비스가 제공됩니다. 이제 가지수를 하나하나 세워보는것은 의미가 없습니다. 서비스들이 계속 추가되고 그 속도가 매우 바쁩니다.

아래 왼쪽에는 대분류 카테고리 입니다. 이 항목이 "카테고리"입니다. 아래 "기계학습" 카테고리를 클릭했을때 오른쪽에 매우 다양한 AWS서비스 리스트를 확인할수 있습니다.

우리는 이렇게 다양한 모든 서비스를 다 사용할 수 없습니다. AWS에서 우리가 서비스하는 목적에 맞게 적절한 선택을 해야 합니다. 하지만 일반적으로 AWS를 다루는 책이 많이 있습니다. 일반적인 AWS의 필수기능 및 웹서비스를 하기 위한 항목, 가장 많이 사용하는 서비스에 대한 설명이 위주로 되어 있습니다. AWS를 사용하는 사용자 중에 "데이터 과학"에 대해서 사용하려면 어떠한 서비스를 이용해야 할지 막막한 부분인데, 그것에 대해서 좋은 자료를 찾는다면 해당 책이 그 답이 될 것 같습니다.

 

아래와 같은 주안점으로 책을 살펴보려고 합니다.

  • AWS 다양한 새로운 서비스에 대해서 잘 설명을 하고 있는지 궁금
  • 책의 가격이 저렴하지 않지만, 그 가격의 충분한 가치를 가지고 있을까?
  • 데이터과학에 대한 부분이 잘 설명되고 있는가?
  • AWS의 AI/ML분아 재직중이신 2분이 공동저자분에 내용구성에 기대감

 

 

 

처음 이 책을 보았을때, 좋았던 부분은 아래와 같습니다. 

우리가 데이터를 다루지 않는 분야가 있을까요? 아마 모두 어느 정도의 기능단위 개발 후에 누적된 데이터를 기반으로 다른 사업, 서비스의 고급화, 개인화, 추천등으로 이어지는 것은 매우 당연한 흐름입니다.

그러한 면에서 꼭 데이터과학에 대한 전문적인 직업 포지션을 가지고 있지 않은 분들도 이 책은 도움이 되는 부분이라고 생각이 들었습니다.

지금 당장은 사용하지 않지만, 추후에 온프레미스(On-premise) 환경에서 서비스를 구축하기 어려운 환경이면 결국 클라우드 시스템을 이용할수 밖에 없습니다. 이 책은 단순히 AWS에서  이러한, 저러한, 여러가지 서비스를 제공하고 있다는 소개 뿐만이 아니라, 데이터 과학을 즉 데이터를 잘 다루는 이론적인 부분도 충분히 설명이 되어 있기 때문에, 이러한 이론 및 구현하고 싶은 항목을 기준으로 AWS에 제품에 대한 전반적인 동작 방식 및 사용법을 알아갈수 있게 해줍니다. 또한 여려가지 AWS서비스의 구성 조합에 대한 적절한 조합 및 방향성을 알려주는 부분이 좋았습니다.

 

"이 책의 목표는 AWS에서 데이터 과학 프로젝트의 비용을 절감하고 성능을 향상하는 팁을 제공하는 것이다" (by. p.19)

 

 

■ 책이 구성

· 소개글이 매우 잘 되어 있고, 꼼꼼히 살펴보면 책의 구성과 언급되는 기술에 대해서 파악하기 용의합니다.

· 1장 : 아마존 AI.ML에 대해서 개략적 설명

· 2장 : 추천시스템, 자연어 이해 등등 아마존 Al과 ML스택을 적용

· 3장 : 세이지메이커 오토파일럿의 AutoML 사용

· 4~9장 : 데이터의 수집 및 분석, 피처 선택 및 엔지니어링, 모델훈련 및 튜닝, 아마존세이지메이커, 아마존 아테나, 아마존 레드시프트, 아마존 EMR, 텐서플로우, 파이토치, 서비리스 아피치 스파크를 활용한 모델배포, BERT기반 자연어 처리 NLP의 전체 모델 개발 라이프 사이클

· 10장 : 세이지메이커 파이프라인, 큐브플로우 파이프라인, 아파치 에어플로우, MLflow, TFX와 함께 MLOps를 사용해 모든 것을 반복하는 파이프라인으로 통합

· 11장 : 아마존 키네시스와 아파치 카프카를 사용한 실시간 데이터 스트림

· 12장 : AWS IAM, 인증, 권한부여, 네트워크 격리, 미사용 데이터 암호화, 전송중 양자 내성 네트워크 암호화, 거버넌스, 감사 가능성

 

각 항목마다 AWS의 서비스 제품들이 목적에 맞게 구성되어 있습니다. 책에서는 AWS의 제품명을 영어로 사용하지 않고 한글로 사용합니다. 4~9장에서 다루는 내용에서 "데이터의 수집 및 분석, 피처 선택 및 엔지니어링, 모델훈련 및 튜닝"에 대한 내용은 꼭 AWS와 무관한 부분으로 구성된 내용도 좋았습니다.

 

■ 책이 구성

· 이론적인 부분을 설명을 하면서, 자연스럽게 AWS에서 사용하게 될 일반적인 구성을 설명해주는것이 좋았습니다.

보통 서비스하는 항목들이 많아서, 어떤 서비스를 어떤 기능에 사용하게 될지 선택하기 어려운데, 이렇게 가이드를 주는내용은 곳곳에 언급됩니다. "그래서 AWS의 서비스를 전반적으로 파악하는데, 도움을 많이 받게 됩니다."

 

· 아주 좋은 AWS기술 스택 그림이다.
일반적으로 영어도 된 글자를 보다가, 어색할수 있습니다. 책에서는 가능한 대부분을 한글로 표기를 하였습니다.

혼돈을 막기 위해서 부록에서 영어서비스명과 한글로 번역한 사항이 정리되어 있습니다.

· 세이지메이커 오토파일럿은 투명한 AutoML의 표준이다.첵에서도 이것과 관련된 부분에 대해서 상세히 설명을 하고 있다.

 

· 데이터 분석을 위해서 서비스를 정했는데, 비용과 관련이 있는 부분은 항상 고민입니다. 그 이유는 각각의 인스턴스의 타입도 종류가 많습니다. 책에서는 이러한 부분도 설명되어 지고 있어서 실무에서 사용할때, 좋은 가이드를 세울수 있습니다.

 

■ 모범사례를 통해서 경험하는 간접체험

· 개인별 상품 추천 시스템 / 부적절한 동영상 감지 / 수요예측 / 가까 계정 식별 / 정보 유출 탐지 활성화 등등 2장에서 제시되는 사례목록은 아래와 같습니다.

CHAPTER 2 데이터 과학의 모범 사례

2.1 모든 산업에 걸친 혁신
2.2 개인별 상품 추천 시스템
2.3 아마존 레코그니션으로 부적절한 동영상 감지
2.4 수요 예측
2.5 아마존 프로드 디텍터를 사용한 가짜 계정 식별
2.6 아마존 메이시를 사용한 정보 유출 탐지 활성화
2.7 대화형 디바이스와 음성 어시스턴트
2.8 텍스트 분석 및 자연어 처리
2.9 인지 검색과 자연어 이해
2.10 지능형 고객 지원 센터
2.11 산업용 AI 서비스와 예측 정비
2.12 AWS IoT와 아마존 세이지메이커를 사용한 홈 자동화
2.13 의료 문서에서 의료 정보 추출
2.14 자체 최적화 및 지능형 클라우드 인프라
2.15 인지 및 예측의 비즈니스 인텔리전스
2.16 차세대 AI/ML 개발자를 위한 교육
2.17 양자 컴퓨팅을 통한 운영체제 프로그램
2.18 비용 절감 및 성능 향상
2.19 마치며

이러한 사항에 대해서 매우 흥미로운 사항들이 매우 많이 있습니다. 어느 도메인의 서비스에서도 모두 검토해서, 적용해볼만한 것들입니다.

이책은 AWS책이여서, 아래와 같이 AWS서비스를 활용한 구성도로 설명하는 부분이 매우 좋았습니다.

 

■ 데이터 수집하기

· 해당 분야는 정말 어느분들이나 관심있게 보실수 있는 분야입니다. 꼭 ML,AL을 다루지 않는다고 하여도 우리는 데이터를 collect하고 save하는 것은 서비스를 운영하는데, 필수요소입니다. 서버를 구매해서 환경구축을 하는것은 장점도 있지만, 단점도 분명히 존재합니다. 그래서 이러한 AWS의 서비스구성을 잘 알아두면 필요할 때, 파일럿 형태로 서비스를 구성해 볼수 있어서 장점이 더 많은것 같습니다.

· 데이터 레이크를 대규모의 다양한 데이터셋에 엑세스 할수 있도록 구성하는 것을 S3, 아테나, 글루 크롤러, 레드스피트 스펙트럼등을 통해서 코드베이스로 설명이 되어진다. 이론적인 부분만 설명하는 것이 아니라, 실제 구현샘플 코드를 기반으로 작성되어 있어서, 엔지니어 입장에서는 이해가 조금더 편하게 다가옵니다.

이런 비용절감 및 상세한 비교표는 이책에서만 있는 것이 아닐까 생각합니다.

 

■ 데이터 분석하기, 데이터셋 준비

· 본적적으로 세이지메이커, 레드시프트, 글루 데이터브루 를 활요하는 내용으로 구성됩니다.

· 일반적은 머신러닝, 딥러닝 책과는 조금 다른 느낌이 드는 책입니다. 이론적인 것보다 실제 서비스를 활용한 데이터 분석이라는 측면에서 조금더 가시적으고, 현업에서 사용하기에 무리가 없는 설명가이드 및 차트를 통한 가시화되는 부분이 책에 잘 녹아져 있습니다.

· 세이지메이커 프로세싱을 통한 피처 엔지니어링 부분에서 피처를 구성하고, 텐서플로우, 사이킷런, BERT를 사용하여 클러스터에 전체 데이터셋을 균형을 맞추고 분할/변환을 진행합니다.

· 세이지메이커 인프라를 활용하여서, 모델의 학습을 진행합니다.

 

 

■ 잘 만든것을 배포하기

· 프로덕션에 모델 배포하기위한 다양한 기법을 소개합니다. 모델을 업데이트 하고, 품질에 대한 검증을 AWS를 이용해서 구성하는것이 인상적이였습니다. 특히  AWS 람다 함수 및 아마존 API 게이트웨이의 부분은 일반적인 서비스에서도 참고할 만한 내용이며, 이러한 부분이 연결이 되어서 최종 파이프라인과 MLOps의 구성을 완성하게 됩니다.

· 마지막 장에 언급된 AWS 보안 부분은 일반적으로 알고 있는 IAM이외에 다른 고려사항도 언급되어 있어서, 관련된 부분을 AWS의 전반적으로 사용하는데 도움이 되는 내용으로 구성되어 있습니다.

12.1 AWS와 사용자 간의 공동 책임 모델
12.2 AWS IAM
12.3 컴퓨팅 및 네트워크 환경 격리
12.4 아마존 S3 데이터 액세스 보호
12.5 저장 시 암호화
12.6 전송 중 암호화
12.7 세이지메이커 노트북 인스턴스 보호
12.8 세이지메이커 스튜디오 보안
12.9 세이지메이커 작업과 모델 보안
12.10 AWS 레이크 포메이션 보호
12.11 AWS 시크릿 매니저를 통한 데이터베이스 자격 증명 보안
12.12 거버넌스
12.13 감사 가능성
12.14 비용 절감 및 성능 향상
12.15 마치며

책의 전반적인 수준이 높고, AWS를 사용하면서 일반적으로 알아야 되는 부분이 많아서 조금 놀랬습니다. 데이터 과학의 특화된 부분의 내용구성을 설명하면서, 자연스럽게 범용적으로 활용할수 있는 내용도 많았고, 비용절감적인 부분, 인스턴스의 비교표를 통해서 효율적으로 AWS를 사용할수 있는 노하우가 많이 설명되어지는 책이라고 생각합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo