AI Agent에 대한 생각들최근 생성형 AI가 떠오르면서 동시에 떠오르고 있는 개념이 AI Agent이다. 모두가 에이전트를 외치는 가운데 이제 막 떠오르는 개념이라 그런지 모두가 다른 에이전트를 말할 때도 있다. 요즘 떠오르고 있는 에이전트란 LLM을 바탕으로 한 에이전트를 말하는 듯 하지만 일단은 그냥 알아서 해주는 것, 알아서 해주는 것 등의 개념으로 통용되고 있는 듯 하다 .이렇게 산개되어있는 개념을 하나씩 정리해보려고 한다.AI 산업에서의 AgentAI 산업에 있어 agent 는 센서를 통해 주변 환경을 인식하고 그에 맞게 움직이는 독립적인 프로그램이나 존재이다.에이전트는 주변을 감지하고 생각한 뒤 행동하기 위해 자신의 actuator(동작 장치)를 사용한다.에이전트의 일반적인 예시에는 다음이..
AI 서비스를 B2B로 전개하는 것에 대한 고민AI 서비스가 유망할 것 같은 분야 중 하나가 마케팅이다. 리포트 자동화, 유저 분석 등 가능성이 많아 보였다. 그래서 내가 개발자임에도 마케팅 회사(그로스 마케팅)로 이직한 건 나쁘지 않다고 생각했다. 직접 그 안에 들어가야 보이는 것들이 있으니까. 그리고 그런 걸 서비스화해서 회사 내부에서 운영해봐도 좋겠다고 생각했다.근데 요즘 드는 생각이 있다. 마케팅 분야는 데이터가 방대하고, 반복적인 작업이 많아 AI가 적용되기 딱 좋은 환경이라고 생각했다. 예를 들어, 리포트 작성에서는 여러 광고 플랫폼에서 데이터를 수집해 정리해야 하고, 유저 분석에서는 다양한 데이터를 빠르게 통합해 인사이트를 도출해야 한다. 이런 작업은 AI가 처리 속도와 정확도를 높일 수 있..
ROC Curve (Receiver Operating Characteristic) & AUC Curve (Area Under the Curve) ROC Curve 는 이진분류에서 클래스별 분포가 다를 때, Accuracy의 단점을 보완하기 위해 사용된다. 다양한 임계값에서 FPR(1-Specificity) 에 대한 TPR(Recall) 값 을 플롯하고 noise를 제거하여 signal을 얻는 커브이다. AUC Curve 는 ROC Curve의 밑부분을 뜻하며 이 AUC 커브를 이용하여 퍼포먼스를 확인한다. 결과만 말하자면, AUC Curve가 높이 향할 수록 Positive 와 Negative 를 잘 구분할 수 있는 모델인 것이다. 구현 sklearn 으로 간단하게 구현 가능하다. from sklearn..
Confusion Matrix (오차행렬) Classification 모델의 퍼포먼스를 설명할 수 있는 테이블이다. 간단한 설명을 해보자. Actual\Predict POSITIVE NEGATIVE POSITIVE True Positive False Positive NEGATIVE False Negative True Negative 행은 Actual Values로 실제 값을 말한다. 열은 Predictive Values로 예측값을 말한다. True Positive (TP): 모델의 예측도 YES, 실제값도 YES일 때 True Negative (TN) : 모델의 예측이 NO, 실제값도 NO일 때 False Positive (FP) : 모델의 예측이 YES, 하지만 실제값은 NO일 때 (Type 1 에러라..
Coursera - Batch Normalization 하이퍼파라미터들을 살펴보며 최적화를 어떻게 시킬 수 있는지를 확인했다. 하이퍼파라미터를 잘 선택할 수 있는 또 다른 테크닉인 Batch Normalization 을 살펴보자. 모든 신경망에 적용되진 않지만 적용이 가능하다면 하이퍼파라미터 탐색이 훨씬 쉽고 빨라진다. Batch Normalization 하이퍼파라미터 탐색을 쉽게 만들어줄 뿐만아니라 신경망과 하이퍼파라미터의 상관관계를 줄여주어 더 많은 하이퍼파라미터가 잘 작동하게 만들어준다. 또한 아주 깊은 심층 신경망이라도 아주 쉽게 학습하 수 있도록 해준다. 와오... 그래서 ML 에서 아주 중요한가보다. 어떻게 작용할까 로지스틱 회귀에서는 인풋값 x를 normalization 하여 w,b에 영향을..
Coursera - Hyperparameter Tuning 이제까지 신경망을 학습시킬 때 사용하는 여러 하이퍼파라미터들(레이어, 히든유닛, 학습률 알파, 베타, 미니배치사이즈, 모멘텀파라미터 등등)이 있다. 그럼 이 많은 하이퍼파라미터들 중에 좋은 하이퍼파라미터를 어떻게 찾을 수 있을까? 체계적으로 하이퍼 파라미터를 튜닝할 수 있는 법을 알아보자. 대충 앤드류 응이 생각하는 하이퍼 파라미터 중요도 순위 α (학습률) 모멘텀 β (0.9) 미니배치 사이즈 히든유닛 레이어 학습률 감쇠 머신러닝에서 하이퍼파라미터들을 정하는 법들. 수많은 하이퍼파라미터중에 어떤 하이퍼파라미터가 문제해결에 더 중요한지를 모르기 때문에 무작위로 정해야한다. 은닉유닛수를 정한다고 치면 50부터 100까지의 값들을 수직선상에 세워두고..
Learning Decay (학습률 감쇠) 학습 알고리즘의 속도를 높이는 한가지 방법은 시간에 따라 학습률을 천천히 하는 것이다. 이를 Learning Decay (학습률 감쇠) 라고 부른다. 왜 학습률이 감쇠해야함? 배치를 잘게 자른 미니배치 경사하강법을 사용한다고 생각해보자. 고정된 α (learning_rate) 를 사용할 경우 최솟값에 정확하게 수렴하지 않고 주변을 돌아다니게 된다. α를 줄임으로써 학습 초기 단계에서는 훨씬 큰 스텝으로 진행하다가 학습이 수렴할수록 작은 스텝으로 진행하게 할 수 있다. 이 경우 단계마다 진행 정도가 작아지면서 주변을 돌아다니는 대신에 최솟값 주변에서 밀집하여 진동할 것이다. 구현 1 epoch 는 배치 한번을 통과하는 단위다. α0 는 초기학습률이다. Learni..
Adam (Adaptive Moment Estimation) Momentum 과 RMSProp 을 합친 알고리즘인 Adam 어떻게 작동하는지? # 지수 가중 평균법 : Vt = β*Vt-1 + (1-β)*Θt # Vdw = 0, Sdw = 0, Vdb = 0, Sdb = 0 로 초기화 # 모멘텀을 구현해준다. (RMSProp과 구분하기위해 β1으로 표기) Vdw = β1*Sdw + (1-β1)*dw Vdb = β1*Sdb + (1-β1)*db # RMSProp을 구현해준다. (모멘텀과 구분하기위해 β2으로 표기) Sdw = β2*Sdw + (1-β2)*dw² Sdb = β2*Sdb + (1-β2)*db² # 각각 편향보정을 해준다. V^corrected dw = Vdw / (1-β^t) V^correct..
RMSProp(Root Mean Square Prop) 모멘텀을 이용해서 경사하강법을 빠르게 할 수 있었다. 그리고 경사하강법을 빠르게 할 수 있는 알고리즘이 또 있다. 바로 RMSProp이다. 이것은 도함수의 제곱을 지수가중평균하는 것이다. ✋ 잠깐 여기서 다시 기억해보자. 경사하강법에서 빨리 최솟값에 도달하려면 진동하고있는 수직의 학습률은 느리게 최솟값을 향해 나아가야하는 수평방향의 학습률은 빠르게 해야한다. 어떻게 작동하는지? # 지수 가중 평균법 : Vt = β*Vt-1 + (1-β)*Θt Sdw = β*Sdw + (1-β)*dw² Sdb = β*Sdb + (1-β)*db²그리고 가중치를 이렇게 업데이트해준다. α = learning_rate w = w - α * dw/√Sdw b = b - α ..
Gradient Descent with Momentum (모멘텀 알고리즘 혹은 모멘텀이 있는 경사하강법) 자, 지수가중평균과 편향보정을 알았으니 일반적인 경사하강법을 빠르게 동작하게할 수 있는 모멘텀 알고리즘을 배우자. 이것은 경사에 대해서 지수가중평균을 계산하고 그 값으로 가중치를 업데이트하는 것이다. 그게 뭔데? 뭔지 알아보기 위해서 일반적인 경사하강법과 비교해보자. 일반적인 경사하강법 혹은 미니배치경사하강법으로 비용함수를 최적화한다고 생각해보자. 비용함수의 등고선이 있으면 어떠한 최솟값을 향해 나아갈 것이다. 그 모양은 다음과 같다. 학습률이 많은 단계를 거치게되면 최솟값으로 나아가면서 천천히 진동하는데, 이것은 다음과 같은 단점을 만든다. 속도를 느리게 만들고 더 큰 학습률을 사용하는 것을 막는다..