|
한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다. 핸즈온 머신러닝 with 사이킷런, 파이토치
배경문득 방 안에 굴러다니는 공책 하나를 펼쳐보니, 예전에 필기해두었던 노트 필기가 보였다. 그래서 이번 실습은 손글씨 분류를 목표로 잡았다. 그리고 직접 데이터를 생성해서 다듬는 작업까지, 모두 직접 진행해보고자 했다.
좌: 원본 이미지 / 우: 전체 과정 요약 1. 데이터 편향모든 숫자를 다 적어두면 좋겠지만, 그냥 최대한 헷갈릴만한 곡선 위주의 숫자 조합으로 진행했다.
2. 데이터 셋 만들기최초 데이터는 여러 손글씨가 하나의 사진에 모아져있는 상태로 작성했다. 공교롭게 가로 줄이 그어진 노트에, 세로 간격은 완전히 일정하지는 않은 방식으로 작성했다. 세로로 줄을 그어서 격자 형태로 각 데이터를 고정 크기로 만들었을 때 맞지 않는 부분이 있었다. 그래서 원본 사진을 회색조로 변환시킨 후, 고정 범위의 영역에 대해 색을 반전시켜 줄의 위치를 식별했다. 고정 범위를 잡아 접근한 것은 이것이 공책이었기 때문이다.
회색조 - 고정 범위 줄 식별 - 줄 색상 구분되게 마스킹 줄 마스크를 구별되는 색상으로 씌우고, 각 줄 사이에 한정하여 사진 색상을 반전시켜, 글자 영역을 식별하고 파란 선으로 표현했다. 잘린 서로 다른 크기의 원본 사진을 일정한 크기로 표준화했다. 기준 크기를 너무 작게한 탓에 일부 잘리긴 했지만, 결과적으로 큰 문제는 아니었다. 그러나 좀 더 엄밀하게는 식별된 글자별 영역에 고정 크기의 여유를 두어야 더 정확하게 글자를 식별할 수 있을 것 같다.
줄과 줄 사이의 고정 영역을 기준으로, 영역 색상 반전하여 글자 추출 - 크기 및 색상 표준화 CSV를 직접 수정하며 라벨링하는 것이 불편해서 Web UI를 활용했다. 하지만 실제로 프로젝트를 진행한다면, 공책 한 면에 같은 숫자를 적어두고 일괄 라벨링하는 편이 훨씬 효율적이라고 생각한다.
3. 모델링RBF 커널을 활용하는 SVM 모델로 파라미터 적당히 수정하여 평가를 진행했다. 4. 평가 결과sklearn.model_selection 라이브러리의 GroupShuffleSplit을 활용하여, 400개 학습 데이터와 112개의 테스트 데이터로 cross-validation을 수행했다.
5. 요약손글씨 이미지에서 총 512개 숫자 표본을 만들고, 400개를 학습에, 112개를 평가에 사용했다. 행 단위 분리 평가의 정확도는 98.2%, 균형 정확도는 98.4%였다. 이 데이터에는 숫자 0, 3, 4, 6, 8, 9만 포함되어 있으며, 4는 독립적으로 평가되지 않아 결과 해석에 주의가 필요하다. 이미지를 28×28 크기로 정규화하고 784개 픽셀값을 특징으로 사용하는 RBF SVM을 학습했다. 평가 데이터는 표본 단위 무작위 분할 대신 행 단위로 분리해, 같은 행의 필체가 학습과 평가에 동시에 포함되지 않도록 했다. 마치며...머신러닝 외에도 신경망과 딥러닝, 그리고 LLM 트랜스포머 활용까지 업데이트 내용이 잘 반영되어 있는 좋은 책이다. 책에서 머신러닝 개념 같이 기본적인 내용도 다루고 있지만, 라이브러리 자체를 공부하는 것은 다양한 구현체의 존재 이유와 그 활용 방식을 공부하는 것이라 깊이가 있는 편이다. 제공하는 예제 코드도 풍부하고, 책에도 각주가 많아서 혼자 공부하기에 적합하고, 외부 강의 플랫폼에서 이 책을 교재로 강의를 진행하는 것을 확인해서, 필요하다면 수강해보는 것도 좋아보인다. |
|
바이브코딩으로 이것저것 만들던 사람이 읽은 『핸즈온 머신러닝 with 사이킷런, 파이토치』
올해부터 AI를 굉장히 많이 쓰고 있습니다. 궁금한 것을 물어보는 것에서 시작해서 바이브코딩으로 업무를 자동화하고, 필요할 때마다 이런저런 툴도 만들어 봤습니다. 예전 같으면 엄두도 내지 못했을 것들이 하나씩 만들어지는 건 재미있습니다. 생각만 하던 것이 실제로 돌아가면 신기하기도 하고요. 그런데 그렇게 이것저것 만들다 보니 조금 이상한 기분이 들었습니다. 만든 것은 늘어나는데 제가 아는 것도 그만큼 늘어나고 있는지는 잘 모르겠더라고요. 문제가 생기면 AI에게 다시 물어보고, 고쳐 준 코드를 실행해 보고, 또 막히면 다시 물어봅니다. 계속 무언가를 하고는 있는데 제자리에서 맴도는 것 같았습니다. 깊게 공부하지 않고 필요한 것만 그때그때 가져다 쓰고 있어서 그런가 싶었습니다. 그래서 머신러닝을 공부해 보면 어떨까 하는 생각으로 이 책을 알아보게 됐습니다. ■ 머신러닝이 어떻게 이루어지는지부터 『핸즈온 머신러닝 with 사이킷런, 파이토치』는 머신러닝의 기본 개념부터 신경망과 딥러닝까지 다루는 책입니다. 지은이 오렐리앙 제롱 옮긴이 박해선 한빛미디어 / 1,112쪽 분량부터 상당합니다. 가볍게 읽고 넘어갈 책은 아니겠구나 싶었습니다. 1부에서는 사이킷런으로 머신러닝을 배우고, 2부에서는 파이토치를 중심으로 신경망과 딥러닝을 다룹니다. 뒤로 가면 트랜스포머와 LLM에 관한 내용도 나옵니다. 제가 궁금했던 것은 머신러닝이 실제로 어떤 순서로 이루어지는지였습니다. 책에는 데이터를 가져와 살펴보고, 모델이 학습할 수 있도록 준비하고, 모델을 훈련하고 평가하는 과정이 나옵니다. 만든 모델을 서비스에 적용하고 계속 살피는 단계까지 이어집니다. 그동안은 AI가 내놓는 결과를 주로 봤습니다. 이 책에서는 그 결과가 나오기까지 어떤 과정이 필요한지를 공부하게 됩니다. 물론 그 흐름을 봤다고 해서 각각의 과정을 다 이해한 것은 아닙니다. 아직은 배워야 할 내용이 어디에 있는지 조금씩 알아가는 정도에 가깝습니다. ■ 솔직히 낯선 단어가 많았습니다 머신러닝을 공부해 봐야겠다는 마음과 책 내용을 이해하는 것은 꽤 다른 일이었습니다. 선형 회귀, 경사 하강법, 과대적합, 하이퍼파라미터 같은 말부터 쉽지 않습니다. 어디선가 들어 본 단어도 있었지만 무슨 뜻인지 설명해 보라고 하면 막막합니다. 수학적인 내용도 많이 나옵니다. 수식이 나오면 읽는 속도가 느려지고, 앞의 설명으로 다시 돌아가야 할 때도 있습니다. AI에게 물어보면 코드는 나옵니다. 그런데 왜 이 코드를 쓰는지, 여기 나오는 값이 무엇을 뜻하는지 이해하려면 제가 알아야 할 것이 많았습니다. 책에 설명과 예제가 있어도 제 기초가 부족하니 한 번에 받아들이기는 어려웠습니다. 이 책 한 권을 읽으면 머신러닝을 금방 알게 될 것 같다고 말하기는 힘듭니다. 지금의 저에게는 시간을 들여 공부해야 하는 책입니다. ■ 활용하는 방법도 공부해 보고 싶습니다 책은 개념 설명과 함께 실제 코드와 예제를 보여 줍니다. 분류나 예측을 어떻게 하는지, 신경망을 어떻게 만드는지 같은 내용도 이어집니다. 업무 자동화 툴을 만들다 보니 이런 내용을 제가 하는 일에 어떻게 써 볼 수 있을지도 궁금했습니다. 반복 작업을 줄이는 것에서 더 나아가, 쌓인 데이터를 살펴보고 예측하는 데도 활용해 볼 수 있을까 싶고요. 다만 아직은 관심이 생긴 단계입니다. 책에 나오는 방법을 제 상황에 맞게 골라 쓰거나 결과가 적절한지 판단하기까지는 공부가 더 필요합니다. 예제가 있다는 점은 좋지만 실행해 보는 것만으로 끝내면 지금까지와 비슷할 것 같습니다. 왜 이렇게 데이터를 준비하는지, 왜 이 모델을 쓰는지부터 이해해 보고 싶습니다. ■ 모르는 것을 하나씩 정리해 보려고 합니다 지금 이 책의 내용을 모두 파악했다고 할 수는 없습니다. 생소한 단어도 많고 수학적인 부분도 어렵습니다. 그래도 무엇을 공부해야 할지 막연했던 때보다는 낫다는 생각이 듭니다. 우선 모르는 용어가 나오면 뜻을 찾아 정리하고, 필요한 수학도 같이 공부해 보려고 합니다. 예제 코드를 따라 할 때도 각 부분이 무슨 역할을 하는지 짚어 보고 싶습니다. 공부할 때도 AI의 도움은 많이 받을 것 같습니다. 설명을 읽어도 모르겠는 부분을 다시 물어보고, 제가 이해한 내용이 맞는지 확인하는 식으로요. 속도는 지금까지 툴을 만들던 때보다 훨씬 느릴 것 같습니다. 그래도 이번에는 제가 이해하는 만큼 조금씩 넘어가 보려고 합니다. 『핸즈온 머신러닝 with 사이킷런, 파이토치』는 지금의 저에게 쉬운 책은 아닙니다. 열심히 공부해야 할 것 같다는 생각이 먼저 들었습니다. 나중에는 제가 만든 도구가 어떻게 돌아가는지, 문제가 생겼을 때 무엇부터 살펴봐야 하는지 조금은 스스로 설명할 수 있으면 좋겠습니다. #핸즈온머신러닝 #사이킷런 #파이토치 #머신러닝공부 #AI공부 #바이브코딩 #한빛미디어 #나는리뷰어다 #서평 |