brunch

You can make anything
by writing

C.S.Lewis

by 박송이 Sep 06. 2024

노코드로 나만의 AI 머신러닝 모델 만들기

여러분만의 분류 모델을 만들 수 있도록 도와 Drill게요!

2023.12.11  |  vol. 8  |  구독하기  |  지난 호 모아 보기


미래에 할 수 있는 경험을 사전 예약하신 퓨처드릴 구독자, 드릴러 님 안녕하세요! AI Experience (AIX)의 이모저모를 전해드리는 '퓨처드릴'입니다!

ChatGPTDALL·E와 같은 생성형 AI의 시대지만 기본적인 인공지능 모델이 어떤 과정을 통해 개발되는지 궁금하셨을 분이 많으리라 생각됩니다. 에디터 쏭과 함께 코딩 없이 나만의 분류 모델을 만드는 과정을 알아보고 알쏭달쏭한 점을 해결해 보아요:)


오늘은 Teachable Machine을 통해 여러분만의 분류 모델을 만들 수 있도록 도와 Drill게요!



시작하기 - Turning On the Drill


요즘은 ChatGPT나 DALL·E를 필두로 하는 생성형 AI가 대세지만 인공지능이 할 수 있는 일에는 더 넓은 범주가 있습니다. 오늘은 그중에서도 무언가를 분류하는 인공지능을 직접 만들어보려고 합니다. 지난번 6호 데이터분석에서는 내가 가진 데이터로 분석을 할 방법에는 한계가 있어서 아쉬움이 있었는데요, 이번에는 Teachable Machine이라는 웹 플랫폼을 통해 바로 데이터셋을 만들고 학습까지 시키는 방법을 알려 드릴게요. 남들이 만들어 놓은 데이터셋이 아니라 내가 직접 데이터셋을 만들 수 있기 때문에 쉽지만, 잘만 활용하면 꽤 재밌는 실험을 해볼 수 있으리라 생각됩니다. 


 기본적인 이미지 데이터부터, 소리 데이터 그리고 포즈 데이터까지 세 가지 종류의 데이터셋을 직접 만드는 방법부터 인공지능 학습의 전반적인 과정, 그리고 학습 결과를 바로 확인해 보는 방법까지 모두 알려 Drill게요~!


모두 follow me~~~



인공지능은 어떻게 분류를 할까?


인공지능이 할 수 있는 여러 일 중에서 오늘은 분류에 초점을 맞춰보려고 합니다. 우선 분류라는 것은 무엇이고 어떤 과정을 통해 인공지능이 분류할 수 있는지 차근차근 소개해 드릴게요.


분류(Classification) 태스크는 데이터를 여러 그룹 또는 카테고리로 분류하는 작업을 말합니다. 예를 들어, 과일을 사과, 바나나, 오렌지와 같은 여러 종류의 카테고리로 분류하거나 어떤 메일을 스팸 메일이거나 스팸이 아닌 메일로 분류하는 일, CT 사진을 보고 질병을 진단하는 일까지 모두 분류 태스크의 예시입니다.


인공지능의 학습 과정 

인공지능은 크게 세 단계를 거쳐 분류 태스크를 수행합니다. 


1.  데이터 수집 및 전처리  

먼저, 모델을 학습시키기 위해 데이터를 수집하고 정리합니다. 이 데이터는 분류하려는 대상에 관한 정보를 담고 있어야 합니다. 그 후, 데이터를 전처리하여 모델에 적합한 형태로 변환합니다.


2.  모델 학습

데이터를 이용하여 모델을 학습시킵니다. 이 모델은 데이터의 특성과 패턴을 학습하여 입력 데이터를 여러 카테고리 중 하나로 분류할 수 있도록 합니다.


3.   예측 및 평가

학습된 모델을 사용하여 새로운 데이터를 예측합니다. 모델은 입력된 데이터를 분석하고 학습한 지식을 바탕으로 해당 데이터를 카테고리로 분류합니다. 그 후, 분류 결과를 평가하여 모델의 성능을 측정하고 개선합니다.


간단히 보면 세 단계지만, 각각의 과정을 보게 되면 인공지능 모델을 만드는 것은 한 번의 시도로 끝나지 않습니다. 데이터 수집과 전처리 과정부터 보게 되면 결국 분류를 잘하기 위해서는 핵심이 되는 데이터의 특징을 잘 뽑아내야 하는데 학습을 시키고 학습 결과를 보기 전까지는 내가 특징을 잘 뽑았는지 확신할 수 없습니다. 결국 위의 세 단계를 계속해서 반복해 보고 가장 결과가 좋은 방법을 선택해야 합니다. 하지만 전문적으로 인공지능을 배우지 않은 사람에게는 코드를 작성하는 것부터가 큰 벽이죠. 그래서 우리는 Teachable Machine이라고 하는 웹 플랫폼을 이용해서 위의 세 단계를 시도해 보려고 합니다.



Teachable Machine이란?  

Teachable Machine은 누구나 머신러닝 모델을 쉽고 빠르고 간단하게 만들 수 있도록 제작된 웹 기반 도구입니다. 보통 인공지능 모델을 만들 때 데이터셋을 구성부터 쉽지 않은데요, Teachable Machine을 이용하면 매우 쉽게 데이터셋을 만들 수 있고, 위에서 설명해 드렸던 세 가지 단계를 버튼만 클릭하여 시도해 볼 수 있습니다.  


네 단계로 Teachable Machine을 이용한 모델 만들기 과정 소개  

출처 : https://teachablemachine.withgoogle.com/

위에서는 세 가지 단계를 소개해 드렸는데 오늘은 왕초보 분들을 대상으로 네 단계로 나누어서 과정을 설명하겠습니다.


STEP 1 - 분류의 기준 정하기

분류 모델을 만들기 위해서는 가장 먼저 분류하고자 하는 기준을 정해야 합니다. 위의 1번을 보시게 되면 Class1으로 나와 있는데요, 물론 Class1, Class2로 나와 있어도 모델을 만들 수 있지만, 그렇게 되면 나중에 결과를 확인할 때 혼동할 수 있으므로 명확한 기준을 써주면 좋습니다.


STEP 2 - 데이터 모으기

분류의 기준을 정하고 나면 각 기준에 맞는 데이터를 웹을 통해서 입력해 줍니다. 웹캠을 이용해서 바로 입력하는 방법이 있고 업로드를 통해서 미리 만들어둔 파일을 업로드하는 방법이 있습니다. 아래에서는 웹캠을 이용해서 바로 입력하는 방법들을 소개해 드릴게요.


STEP 3 - 학습하기

학습하기 과정은 비교적 간단합니다. 위의 1번과 2번을 제대로 완료하고 나면 오른쪽의 모델 학습시키기 버튼이 파란색으로 활성화됩니다. 아래 예시에서는 간단하게 버튼을 눌러서 학습시키는 과정을 보여드리고 맨 아래에서는 ‘고급’에서 더 설정할 수 있는 부분들에 대해서 자세히 소개해 드릴게요.


STEP 4 - Preview로 학습결과 확인하기

학습까지 완료하고 나면 오른쪽의 Preview 섹션이 활성화됩니다. 데이터를 입력할 때와 마찬가지로 웹캠을 통해서 바로 데이터를 넣어 테스트해 볼 수도 있고 아니면 파일을 업로드할 수도 있습니다.




실습 1 ) 이미지를 분류할 수 있는 모델 만들기


이번 예제에서는 바나나가 얼마나 익었는지 분류할 수 있는 모델을 만들어 보려고 합니다. 덜 익은 바나나의 색은 초록색에 가깝고 바나나가 맛있게 익을수록 색이 노란색이 바뀌죠. 이를 이용해서 우린 다양한 색을 가지고 있는 바나나를 바로 웹캠으로 저장하고 이를 바탕으로 분류 모델을 만들어 새로운 바나나 이미지가 주어졌을 때 잘 분류할 수 있는지 확인해 보려고 합니다.


[STEP ①] 분류의 기준 정하기


출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-bananameter-4bfffa765866

바나나의 상태를 3가지로 정의하고 ‘No Banana’라고 해서 바나나가 없을 때도 정의하였습니다. 이렇게 이미지별로 이 이미지가 어떤 카테고리인지 정하는 것을 ‘라벨링’이라고 합니다. 우리가 아닌 그 ‘라벨’을 생각하시면 쉽습니다. 파일에 이 파일은 어떤 파일인지 라벨지를 붙이는 것처럼 컴퓨터에게 우리가 보여주는 데이터가 무엇인지 카테고리를 알려주는 것입니다. 사람이 보기에는 초록색 바나나는 아직 덜 익은 바나나인 것을 알지만 인공지능은 아직 학습하지 않았기 때문에 초록색 바나나와 반점이 많은 바나나를 분류할 수 없습니다. 그렇기에 인간이 분류의 기준을 세워놓고 각 기준에 맞는 이미지를 입력으로 넣어주어 모델이 이미지와 그에 해당하는 기준을 잘 짝을 지어 학습할 수 있도록 하는 것입니다. 


[STEP ②] 데이터 모으기

 

출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-bananameter-4bfffa765866

기준을 세운 다음에는 각 기준에 맞는 이미지를 웹캠으로 바로 사진을 찍거나 구글 드라이브에 저장된 이미지를 바로 업로드해야 합니다. 위의 gif에서는 잘 익는 바나나 이미지를 웹캠으로 저장해주고 있습니다. 오른쪽 상담을 보시게 되면 총 110장의 이미지가 ‘Ripe’ 카테고리에 저장된 모습을 보실 수 있습니다. 인공지능 분야에서는 데이터의 품질이 곧 인공지능의 성능이라고 해도 과언이 아닌 만큼 최대한 다양한 각도, 다양한 바나나의 이미지를 더 많이 입력해 주시면 좋은 인공지능 모델을 만들 수 있습니다.


[STEP ③] 학습시키기


출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-bananameter-4bfffa765866

이렇게 기준을 세우고 각 카테고리에 해당하는 이미지들을 저장해두고 나면 Training 버튼이 활성화되면서 학습을 시킬 수 있습니다. Teachable Machine에서는 버튼만 한번 눌러주면 이렇게 쉽게 우리가 업로드한 이미지를 바탕으로 모델을 만들 수 있습니다.


[STEP ④] Preview로 학습결과 확인하기


출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-bananameter-4bfffa765866

학습이 끝난 후에는 Preview 섹션을 통해서 역시나 웹캠을 통해 바로 모델의 성능을 확인해 볼 수 있습니다. 코드를 통해서 모델의 성능을 확인했다면 이 또한 쉽지 않았을 과정이지만 데이터를 모으는 과정부터 테스트를 해보는 과정까지 모든 과정을 웹으로 쉽게 할 수 있다는 점이 Teachable Machine의 가장 큰 장점이 아닐까 싶습니다.

위의 예시를 보시게 되면 노란색의 잘 익는 바나나 이미지를 보고 모델은 Ripe로 분류하고 있습니다. 아무래도 웹캠을 통해 이미지를 입력받고 있는 만큼 주위 배경이나 빛에도 영향을 받아 Too Early나 Too Late 낮은 확률로 예측하긴 하지만 80%가 넘는 확률로 Ripe를 예측하는 만큼 학습이 잘 이루어졌다고 볼 수 있습니다.



실습 1 ) 이미지를 분류할 수 있는 모델 만들기 정리

공식 링크 : https://teachablemachine.withgoogle.com/train/image

튜토리얼 링크 : https://medium.com/@warronbebster/teachable-machine-tutorial-bananameter-4bfffa765866


모델의 성능을 높이는 TIP

이미지에서 나올 수 있는 최대한 다양한 분류 기준을 만들고 그 기준에 맞는 다양한 이미지 데이터를 만들어 넣어주세요. 인공지능 모델에서는 최대한 좋은 데이터를 더 많이 넣을수록 모델의 성능이 좋아집니다.



실습 2) 소리를 분류할 수 있는 모델 만들기


이번 예제에서는 여러 가지 소리를 분류하는 모델을 만들어보고자 합니다. 이미지 예제와 달리 소리를 녹음할 때 지켜야 하는 최소 길이가 있는데요, 이 부분도 놓치지 않도록 꼼꼼히 설명해 드릴게요!


 또한 이미지와 달리 소리는 연속적으로 이어져 있기 때문에 하나를 뚝 잘라서 입력하기 어렵죠, 그래서 모델의 성능을 확인할 때 'Overlap Factor'라는 값도 설정할 수 있는데 이 부분도 아래에서 자세히 설명드릴게요:)


[STEP ①] 분류의 기준 정하기


출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-snap-clap-whistle-4212fd7f3555


이번 예제에서는 Snaps, Claps, Whistles의 세 가지 기준을 가지고 내가 내는 소리를 분류하고자 합니다. 지금은 세 가지 기준으로 모델을 만들지만 만들고자 하는 목적에 따라 더 많은 카테고리가 있는 모델을 만들 수 있습니다.


[STEP ②] 데이터 모으기


출처 :https://teachablemachine.withgoogle.com/


이번에 데이터를 모을 때는 8초 이상의 오디오 샘플을 각 분류 기준마다 만들어주어야 합니다. 두 번째 사진 왼쪽 하단을 보시게 되면 ‘9초 녹화’라는 부분이 보이실 텐데요, 저 값에 따라 여러분에 버튼을 클릭한 후 녹음되는 지속시간이 달라지게 됩니다. 만약 여러분이 보시는 화면에 9초가 아니라 8초 미만의 숫자가 보이신다면 톱니바퀴 모양을 클릭하신 후 소요시간을 8초 이상으로 바꿔주시면 됩니다. 위의 바나나 예제에서도 설명드렸듯이 인공지능에서는 데이터의 품질이 곧 인공지능의 품질로 이어지는 만큼 Snaps에 해당하는 양질의 소리를 최대한 길게 녹화해 주시는 것이 좋은 모델을 만드는데 도움이 됩니다.

8초 이상으로 설정을 해 주신 다음 파란색의 녹화 버튼을 누르게 되면 소리를 녹음할 수 있습니다. 녹음이 끝난 후 샘플 추출 버튼을 누르시면 오른쪽 화면에 1초 단위의 소리가 기록된 결과를 보실 수 있습니다. 각 소리를 재생해서 들어볼 수도 있고 필요 없다고 생각되면 삭제할 수도 있으니 꼼꼼하게 들어보시고 더 좋은 소리를 선택해 주세요.

또한 여러분이 녹화를 하는 환경이 소음이 많이 발생하는 환경일 수도 있기에 제일 처음 배경 소음을 최소 20초 동안 녹화해 주시면 인공지능 모델이 배경 소음과 여러분이 의도해서 내는 소리를 더 효율적으로 분류할 수 있습니다. 까먹지 말고 배경 소음도 충실히 녹화해 주세요:)


[STEP ③] 학습시키기


출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-snap-clap-whistle-4212fd7f3555

배경소음, Snaps, Claps, Whistles까지 모두 녹화해 주시고 나면 그다음은 Training 해 줄 차례입니다. Teachable Machine에서는 매우 간단하게 데이터를 입력할 수 있는 만큼 다양한 데이터를 넣어보시고 Training까지 완료한 다음 데이터를 다르게 구성한 후 모델의 성능이 무엇이 달라지는지 확인해 보는 것도 하나의 묘미가 될 것 같습니다.


[STEP ④] Preview로 학습결과 확인하기


출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-snap-clap-whistle-4212fd7f3555


Training이 끝난 후 Preview 섹션을 통해 모델의 성능을 확인해 보면 위와 같습니다. 위의 이미지를 보시면 ‘Overlap Factor’라는 슬라이더 영역을 보실 수 있습니다. 이 'Overlap Factor' 값을 크게 설정하면 유사한 소리가 여러 클래스에 걸쳐 있을 때 모델이 그 구분을 덜 엄격하게 다루게 될 것입니다. 반면에 'Overlap Factor' 값을 작게 설정하면 각 클래스의 특징이 뚜렷하게 구분될 것이며, 모델은 더 명확하게 클래스를 분류하려고 할 것입니다. 현실 세계의 데이터는 종종 여러 클래스 간에 중첩되거나 모호한 부분이 있습니다. 여기서 다루는 소리의 경우 서로 유사한 부분이 있거나 또는 중첩될 수도 있죠. 이런 경우 'Overlap Factor'의 값을 조정하여 모델이 이러한 복잡성을 이해하고 더 정확하게 분류할 수 있도록 만들 수 있습니다. 여러분이 만든 박수 소리와 휘파람 소리가 중첩될 경우 이러한 Overlap Factor 값을 조정하여 모델이 더 유연하게 예측하도록 만들어 보는 건 어떨까요?




실습 2) 소리를 분류할 수 있는 모델 만들기 정리


공식 링크 : https://teachablemachine.withgoogle.com/train/audio

튜토리얼 링크 : https://medium.com/@warronbebster/teachable-machine-tutorial-snap-clap-whistle-4212fd7f3555


데이터셋 활용하기 TIP

같은 데이터셋을 매번 만들려고 하니 귀찮으시죠? 이럴 때는 한 번만 데이터셋을 만든 다음 오른쪽 상담의 점 세 개를 클릭하신 후 샘플 다운로드나 Drive에 샘플 저장을 클릭하신 후 다음에 또 사용하실 때 이 데이터를 불러오시면 됩니다. 웹에서 바로 데이터를 만들 수도 있으나 간단하게 업로드 버튼을 통해 기존에 가지고 있던 데이터셋을 업로드할 수도 있습니다. 데이터셋을 불러온 후 추가로 데이터를 보충할 수도 있으므로 한번 데이터셋을 만든 후 다음부터는 데이터를 불러와 사용하고 여기에 추가로 데이터를 보충하여 더 다양한 데이터셋을 만들어보시는 걸 추천해 드립니다.




실습 3) 자세를 분류할 수 있는 모델 만들기


이번 예제에서는 사람의 자세를 분류할 수 있는 인공지능 모델을 만들어 보려고 합니다. 웹캠으로 사람의 인체를 녹화하게 되면 인체 위에 관절과 뼈대가 올라오게 됩니다. 쉽게 말해 관절들이 하나의 기준점이 되면서 우리가 자세를 바꾸게 되면 인공지능은 관절의 위치 변화를 알아차리고 이를 하나의 특징으로 삼아 학습을 합니다. 자세를 웹캠으로 입력할 때는 'FPS'라는 값을 바꿀 수 있는데요, 이게 무엇인지 왜 설정해줘야 하는지 아래에서 차근차근 설명해 드릴게요:)


[STEP ①] 분류의 기준 정하기

출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-head-tilt-f4f6116f491

이번에는 오른쪽, 왼쪽 중에 어느 쪽으로 기울였는지를 분류의 기준으로 세웠습니다. 예제에서는 최대한 단순하게 다루고 있지만 아래에 보이는 ‘Add a class’를 눌러 더 다양한 기준들을 정할 수도 있습니다. 예를 들면 오른쪽 팔을 들거나 왼쪽 팔을 들었는지 분류할 수 있도록 class를 더 추가할 수도 있습니다.



[STEP ②] 데이터 모으기


https://medium.com/@warronbebster/teachable-machine-tutorial-head-tilt-f4f6116f491

자세 관련 데이터를 입력하기 위해서는 설정할 것이 있습니다. 대표적으로는 FPS가 있는데요, FPS는 "Frames Per Second"의 약자로, 1초당 화면에 표시되는 프레임(이미지의 연속)의 수를 나타냅니다. 높은 FPS로 저장된 동영상은 1초에 더 많은 프레임을 보여주기 때문에 더 부드럽게 화면이 전환됩니다.

여러분이 만약 각 분류 기준마다 다른 FPS 값을 설정하면 결국 모델에 입력되는 데이터의 개수가 기준마다 매우 달라질 수 있습니다. 그렇게 되면 어떤 한 기준에 대해서는 데이터의 개수가 많고 어떤 기준에 대해서는 데이터의 개수가 적어질 수 있기에 이렇게 되면 더 적은 데이터로 학습된 기준에 대해서는 모델의 예측이 부정확할 수 있습니다. 그렇기 때문에 되도록 모든 기준에 대해 같은 FPS 값을 가지도록 설정해 주세요.



[STEP ③] 학습시키기


출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-head-tilt-f4f6116f491


데이터까지 모두 입력한 후 학습을 시키면 됩니다. 혹시 학습 시간이 너무 오래 걸린다면 [STEP2]의 데이터 모으기 과정에서 FPS를 너무 높게 설정하진 않았는지 다시 확인해 주세요. FPS값이 너무 높으면 불필요하게 많은 이미지가 입력되어서 학습시간이 길어질 수 있습니다. Teachable Machine은 과정이 간단한 만큼 처음부터 너무 많은 데이터로 학습시키기보다는 데이터를 조금씩 바꿔가면서 과정을 반복해 보시길 추천드립니다.


[STEP ④] Preview로 학습결과 확인하기

출처 : https://medium.com/@warronbebster/teachable-machine-tutorial-head-tilt-f4f6116f491

위의 결과를 보시게 되면 왼쪽으로 기울일 때는 Left Tilt로, 오른쪽으로 기울일 때는 Right Tilt로 잘 분류하는 것을 보실 수 있습니다. 이미지 입력 화면의 상단을 보시게 되면 자르기 기능과 좌우 반전 기능이 있습니다. 만약 입력되는 화면에서 부분만 가지고 테스트해 보고 싶으시다면 왼쪽의 자르기 기능을, 좌우 반전된 이미지를 입력으로 사용하고 싶으시다면 오른쪽의 좌우 반전 기능을 사용해 보시길 추천해 드립니다.



실습 3) 자세를 분류할 수 있는 모델 만들기 정리


공식 링크 : https://teachablemachine.withgoogle.com/train/pose

튜토리얼 링크 : https://medium.com/@warronbebster/teachable-machine-tutorial-head-tilt-f4f6116f491


모델의 성능을 높이는 TIP

웹캠으로 사진을 찍을 때 Delay나 Duration 값을 조정하여 기준에 잘 맞는 이미지만 입력할 수 있도록 만들어보세요. 이미지가 연속해서 들어가는 만큼 불필요한 이미지가 들어가게 된다면 학습 시간이 길어지고 모델의 성능이 떨어질 수 있습니다.



더 잘 학습시키기 위한 옵션 설정하기


여러분 위의 학습시키기 과정에서 Training 탭 안에 고급(advanced) 항목을 보셨을 거예요. 이 항목에는 아래와 같이 에포크, 배치 크기 그리고 학습률을 설정할 수 있는데요, 이 세 가지를 세밀히 조정해서 더 나은 모델을 만들 수 있습니다. 각각 어떤 기능들인지 자세히 설명해 드릴게요:)



에포크(Epoch)


 1 에포크는 한 번의 학습 주기를 의미합니다. 그래서 에포크의 횟수를 조절하게 되면 전체 데이터셋을 몇 번 모델에게 보여줄지 결정하게 됩니다. 예를 들어, 1 에포크는 한 권의 책을 1회 읽는 것을 의미합니다. 당연히 한번 보는 것보다는 여러 번 반복해서 보는 것이 더 좋은 것처럼 전체 데이터셋을 한 번만 보는 것보다 여러 번 반복해서 보는 것이 모델의 성능을 높이는데 도움이 됩니다. 


 하지만 에포크의 횟수를 너무 크게 하면 과적합(Overfitting)이라는 문제가 발생하게 되는데요, 예를 들어 우리가 원하는 것은 시험공부를 열심히 한 후 실제 시험에서도 좋은 점수를 얻는 것인데 과적합이 발생하게 되면 학습할 때는 점수가 좋았는데 그 문제들만 너무 열심히 공부한 나머지 실제 시험에서는 성적이 좋지 않은 상태를 말합니다. 그렇기 때문에 에포크 횟수를 높여서 무조건 많이 보여주는 것만이 정답은 아니고 낮은 값에서 점차 높은 값으로 조정하여 성능을 비교 분석하는 과정이 필요합니다.



배치크기(Batch Size)


 배치 크기는 모델이 한 번에 학습하는 데이터의 양을 말합니다. 예를 들어 학습할 때 이미지를 16개씩 묶어서 모델에게 보여주었다면 배치 크기는 16이 됩니다. 위에서 봤던 에포크의 개념과 함께 생각을 해보면 총 80장의 이미지가 있을 때 배치 크기를 16으로 하면 16장씩 5번을 보아야 80장의 이미지를 모두 다 볼 수 있고 이렇게 16장씩 5번에 걸쳐서 이미지를 모두 다 보게 되었을 때가 바로 1 에포크가 됩니다. 2 에포크, 3 에포크처럼 에포크의 횟수를 늘리게 되면 5번씩 묶어서 보는 과정이 2회, 3회 반복됩니다.


 적절한 배치 크기를 찾는 것도 모델을 잘 학습시키기 위한 매우 중요한 과정 중의 하나입니다. 무작정 배치 크기를 늘리게 되면 오히려 연산량이 너무 많아져 학습 속도가 느려질 수 있고 적절한 병렬 처리가 되지 않아 효율성이 떨어질 수 있습니다. 그렇다면 배치 크기를 너무 작게 하면 모델이 데이터의 특성을 제대로 처리하지 못해 모델의 성능이 떨어질 수 있습니다. 배치 크기 또한 처음부터 너무 큰 값으로 설정하지 말고 작은 값부터 서서히 올려보시길 추천해 드립니다.



학습률 (Learning Rate)


 학습률은 모델이 데이터에서 패턴을 학습하는 속도를 나타냅니다. 정확한 학습률의 개념을 알기 위해서는 수학적 개념을 알아야 하는데요, 오늘은 학습률을 높이거나 낮추는 것의 의미까지만 알아보겠습니다.


 학습률은 말 그대로 학습하는 속도를 조절하는 것과 비슷합니다. 너무 높은 학습률은 모델이 학습을 지나치게 빨리하는 것으로 이해할 수 있습니다. 당연히 무언가를 너무 빨리 배우게 되면 유의미한 학습을 할 수 없고 잘못된 결과를 도출할 수 있습니다. 반대로 학습률이 너무 낮게 되면 너무 느리게 학습하게 되어서 학습하는 시간이 너무 오래 걸리게 됩니다. 보통 학습률은 매우 작은 값에서 시작하니 빨리 학습되길 원한다고 무작정 값을 높이지 마시고 에포크나 배치 크기를 조정한 후 아주 작은 값만 바꾼 후 학습 과정을 반복해 보시길 추천해 드립니다.



마무리하기 - Turning Off the Drill


그동안 뉴스레터 글을 작성해 오면서 인공지능 관련된 소식들을 전한다는 취지가 무색하게 인공지능의 학습 과정을 소개해 드린 적이 없어서 아주 쉬운 방법으로 인공지능 모델을 만드는 방법을 소개해 드리게 되었습니다.


오늘 소개한 Teachable Machine은 웹을 통해서 내가 만든 데이터셋으로 분류 모델을 만들어 볼 수 있다는 장점이 있지만 또 한편으로 요즘 사용되는 생성형 인공지능 도구들에 비한다면 결과가 조금은 빈약한 것도 사실입니다. 하지만 인공지능 학습의 중요개념인 에포크, 배치 크기, 학습률과 같은 개념을 직접 만들어보며 실험해 볼 수 있다는 점에서 큰 가치를 가지고 생각합니다.


앞으로도 단순한 툴 사용법이 아닌 인공지능을 더 깊이 이해할 수 있는 내용들을 소개해 드릴게요:) 오늘도 긴 내용 끝까지 읽어주셔서 감사합니다.




오늘의 AI 단어 :  과적합(Overfitting), 과소적합(Underfitting)


인공지능이 학습한 결과를 평가할 때 나오는 개념 중의 하나가 Overfitting과 Underfitting의 개념입니다. Over와 Under의 개념에서 유추할 수 있듯이 Overfitting은 fitting이 너무 과하게 된 경우이고 Underfitting은 fitting이 적게 된 경우입니다.


Overfitting은 모델이 학습 데이터의 세부 사항까지 완벽하게 기억하여 학습 데이터셋에서는 매우 정확하게 작동하지만 처음 보는 데이터에서는 정확성이 떨어지는 상태를 말합니다. 반대로 Underfitting은 모델이 너무 단순하거나 데이터를 충분히 학습하지 못해 학습 데이터와 실제 데이터 모두에서 성능이 좋지 않은 상태를 말합니다.


Overfitting과 Underfitting이 발생한 모델은 성능이 좋지 않습니다. 그런 만큼 인공지능 모델을 개발할 때는 이러한 지표들을 확인한 후 다시 설계를 하여 학습을 진행하는 것이 필요합니다.






AI Experience (AIX)의 이모저모를 전해드리는 '퓨처드릴'입니다!

퓨쳐드릴은 네 명의 에디터가 매주 돌아가면서 글을 작성하고 있습니다. 


퓨쳐드릴 뉴스레터는 월요일 아침 8시에 발송됩니다. 

새로운 뉴스레터를 받아보고 싶으시다면 https://futuredrill.stibee.com/ 여기서 구독해 주세요:)

















































매거진의 이전글 노코드 데이터 분석 툴 세 가지
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari