함께 공유하고 사용하는 ChatGPT

ChatGPT 프롬프트와 결과물 공유하는 집단 지성

NEO의 탐구 보고서 요약

예시) 제목 : 인공지능 최적화를 위한 미분의 사용

보고서 공유
작성자
AMCU
작성일
2023-04-06 22:50
조회
344

본 보고서를 작성하기 위해 사용했던 chatgpt와의 대화는 아래의 링크에서 확인할 수 있습니다.
https://shareg.pt/8SZuiZR








1. 서론



인공지능 학습에서 차별화 적용을 연구하는 것이 왜 중요할까? 이 질문에 대한 답은 AI가 빠르게 우리 일상 생활을 변화시키기 때문이다. AI는 우리의 삶을 혁신인 방법으로 바꾸었으며, 앞으로 더 큰 영향을 미칠 것으로 예상된다. 그러나 AI를 계속 발전시키고 응용 프로그램을 개선하려면 AI 알고리즘의 기초가 되는 수학적 개념을 이해하는 것이 필수적이다. 최근 몇 년 동안 많은 기업과 연구 기관에서 AI 알고리즘의 개발 및 최적화에 막대한 투자를 해왔다. 대표적으로 Google이 있는데, 자연어 처리와 이미지 및 음성 인식, 예측 모델링과 같은 AI 기술 개발에 막대한 투자를 해왔다. 그 밖에도 Facebook, Amazon, Microsoft 및 IBM 등의 회사가 챗봇과 가상 비서부터 추천 시스템과 예측 분석에 이르기까지 제품과 서비스를 최적화할 수 있는 AI 알고리즘 개발에 투자하고 있습니다. 본 보고서는 이러한 AI를 최적화하는 데 미분학이 어떻게 사용되는 지 알아보고 AI 성능 및 정확도를 개선할 수 있는 방법을 살펴본다.











2. AI 최적화에 사용되는 미분학



AI를 학습시키기 위해서 예측값과 실제값의 차이를 측정하는 비용 함수를 사용한다. AI를 최적화하는 것의 목표는 비용 함수를 최소화하는 매개변수 값을 찾는 것이다. 미분은 비용 함수를 최소화하기 위해 매개변수를 조정해야 하는 방향을 결정하는 데 사용된다. 그 중에서도 경사 하강법은 AI를 학습시키는 데 사용되는 가장 일반적인 최적화 기술 중에 하나이다. 경사 하강법은 비용 함수의 음의 기울기 방향으로 모델의 매개변수를 반복적으로 조정하게 되며, 그래디언트는 비용 함수에서 가장 가파른 증가 방향을 가리키는 벡터를 의미한다. 음의 기울기를 취하는 이유는 비용 함수를 가장 빠르게 감소시켜 예측값과 실제값의 오차를 줄이는 방향을 찾기 위해서이다. 경사하강법 알고리즘은 다음과 같이 수학적으로 표현할 수 있다. 여기서 θ는 매개변수의 벡터, α는 학습률(업데이트의 단계 크기를 제어하는 ​​작은 상수), ∇J(θ)는 매개변수에 대한 비용 함수의 기울기이다.


θ = θ - α * ∇J(θ)


인공 신경망은 인간 두뇌의 구조와 기능에서 영감을 얻어 수학적으로 표현한 기계 학습 모델 중에 하나이다. 인공 신경망은 입력 데이터를 처리하고 예측값을 생성하는 뉴런이라고 하는 상호 연결된 노드의 레이어로 구성된다. 인공 신경망의 각 뉴런은 다른 뉴런과의 연결 강도를 결정하는 가중치라고 하는 일련의 매개변수와 연결된다. 일반적으로 인공 신경망의 비용 함수는 가중치 함수이며, 인공 신경망을 최적화하는 목표는 비용 함수를 최소화하는 가중치 값을 찾는 것이다.



경사 하강법은 인공 신경망의 가중치를 최적화하는 데 사용된다. 이 경우 비용 함수는 가중치의 함수이고 기울기는 가중치에 대한 비용 함수의 편미분 벡터이다. 경사 하강법을 인공 신경망에 적용하기 위해서, 먼저 가중치에 대한 비용 함수의 기울기를 계산해야한다. 이를 위해 미적분의 연쇄 법칙을 사용하게 되며, 각 가중치에 대한 비용 함수의 미분을 이전 계층의 뉴런 출력에 대한 비용 함수의 미분으로 계산할 수 있다. 이렇게 그래디언트를 계산했으면 다음 공식을 사용하여 가중치를 업데이트할 수 있다. 여기서 w는 가중치 벡터, α는 학습률, ∇J(w)는 가중치에 대한 비용 함수의 기울기이다.


w = w - α * ∇J(w)


이러한 경사 하강법이 사용되는 예로는 손으로 쓴 숫자를 인식하도록 훈련된 인공 신경망이 있다. 인공 신경망의 입력층과 은닉층, 출력층으로 구성된다. 입력층에는 28x28 픽셀 이미지에 해당하는 784개의 뉴런이 있다. 은닉층에는 100개의 뉴런이 있고 출력층에는 (0-9)의 숫자를 가지는 10개의 뉴런이 있다. 이 신경망의 비용 함수는 주어진 입력 이미지에 대해 예측된 레이블과 실제 레이블 간의 차이를 측정하는 교차 엔트로피 손실 함수가 사용된다. 이 신경망에 경사 하강법을 적용하기 위해 먼저 가중치에 대한 비용 함수의 기울기를 계산한다. 여기에는 각 층의 뉴런이 출력하는 값에 대한 비용 함수의 편미분를 계산한 다음 가중치에 대한 편미분을 계산하기 위해 체인 규칙을 사용하는 것이 포함된다.


경사 하강법이 실제로 작동하는 원리는 편미분을 통해 그래디언트를 계산하고 하이퍼파라미터인 학습률을 곱한 뒤에 기울기를 빼서 신경망의 가중치를 계산하여 업데이트하는 것이다. 학습 속도는 매개변수 업데이트의 단계 크기를 결정하며, 일반적으로 최적화 프로세스의 안정성과 수렴을 보장하기 위해 작은 양수 값으로 선택한다. 이처럼 경사 하강법은 기울기를 계산하고 사용자가 지정한 수의 에포크(학습 횟수) 동안 또는 비용 함수가 특정 임계값에 도달할 때까지 가중치를 업데이트하여 신경망에 반복적으로 적용된다. 결과적으로 경사 하강법은 새로운 입력 데이터의 출력을 정확하게 예측할 수 있는 신경망을 학습시키게 된다.


경사 하강법을 사용하는 주요 이점 중 하나는 많은 수의 매개 변수가 있는 복잡한 모델을 최적화할 수 있다는 것이다. 이는 신경망이 최적화해야 하는 수백만 개의 매개변수를 가질 수 있는 딥 러닝에서 특히 유용하다. 또한 경사하강법 알고리즘은 다양한 유형의 비용 함수 및 모델 아키텍처에 적용할 수 있는 유연한 최적화 기술로 확률이나 학습 데이터의 양을 변경하는 등의 방법으로 확장 가능하다. 예를 들어 확률적 경사 하강법(stochastic gradient descent)과 배치 경사하강법(batch gradient descent) 등과 같은 경사 하강법의 변형이 있으며, 이들은 수렴 속도와 계산 효율성 사이에서 서로 다른 장단점을 갖는다.







3장 이전연구


생략





4장. 인공지능 학습에 사용되는 미분


경사하강법 알고리즘에서는 미분을 사용하여 AI 모델의 매개변수를 업데이트합니다. 기본 아이디어는 알고리즘의 예측값과 실제값 간의 차이를 측정하는 비용 함수의 가장 가파른 하강 방향으로 매개변수를 반복적으로 조정하는 것이다. 이때 체인룰과 편미분 및 벡터의 미적분학을 사용하게된다.


1) 학습률 및 수렴


학습률은 가중치 업데이트의 단계 크기를 결정하므로 경사 하강법에서 중요한 하이퍼파라미터입이다. 학습 속도가 크면 알고리즘이 최적의 솔루션을 초과하여 발산하고 학습이 되지 않는다. 반면에 작은 학습 속도는 특히 복잡하고 고차원적인 문제의 경우 알고리즘의 수렴 속도를 늦춘다. 최적의 학습률을 찾기 위해 그리드 검색 또는 무작위 검색과 같은 기술을 사용하여 다른 값을 시도하고 주어진 문제에 가장 적합한 값을 확인하면 된다. 또한 Adam 및 Adagrad와 같은 적응형 학습 속도 알고리즘은 그래디언트 및 과거 업데이트를 기반으로 학습 속도를 동적으로 조정하여 수렴 속도를 높이고 성능을 향상시킬 수 있다.


2) 다른 최적화 알고리즘과의 비교


경사 하강법은 단순성과 효율성으로 인해 AI에서 가장 널리 사용되는 최적화 알고리즘 중 하나이다. 그러나 모든 문제에 대해 항상 최선의 선택은 아니다. 기본적으로 Newton의 방법, 켤레 기울기 및 확률적 기울기 하강(SGD)과 같은 다양한 최적화 알고리즘이 존재한다. Newton의 방법은 Hessian 행렬과 같은 2차 정보를 사용하여 비용 함수를 근사화하고 경사 하강법보다 더 적은 반복으로 최적의 솔루션을 찾는다. 그러나 특히 대규모 데이터 세트와 복잡한 모델의 경우 경사 하강법보다 더 많은 계산과 메모리가 필요하다. 여기서 Hessian 행렬은 가중치에 대한 비용 함수의 모든 2차 편미분을 포함하는 정사각 행렬이다.


H = [[∂²J/∂w₁², ∂²J/∂w₁∂w₂, ..., ∂²J/∂w₁∂w_n],


[∂²J/∂w₂∂w₁, ∂²J/∂w₂², ..., ∂²J/∂w₂∂w_n],


...,


[∂²J/∂w_n∂w₁, ∂²J/∂w_n∂w₂, ..., ∂²J/∂w_n²]]




Newton의 방법에 대한 가중치 업데이트 규칙은 다음과 같다. 여기서 H^-1은 Hessian 행렬의 역행렬이고, ∇(J)는 비용 함수의 그래디언트이며, [H^-1 * ∇(J)]_i는 다음에 나오는 벡터의 i번째 요소를 나타낸다. Newton의 방법은 경사 하강법보다 계산 비용이 더 많이 들지만 볼록 최적화 문제의 경우 최적의 솔루션을 빠르게 찾을 수 있다. 그러나 전역 최적 대신 로컬 최적으로 수렴할 수 있는 볼록하지 않은 문제에는 적합하지 않다는 단점이 있다.


w_i = w_i - [H⁻¹ * ∇(J)]_i


다음으로 Stochastic Gradient Descent(SGD)는 변형된 경사 하강법으로 전체 데이터 세트를 한 번에 사용하는 대신 훈련 데이터의 하위 집합을 무작위로 샘플링하여 가중치를 업데이트하는 방법이다. 이 방식은 계산상 효율적이며 대규모 데이터 세트에 사용할 수 있다. 하지만 가중치는 데이터의 하위 집합을 기반으로 업데이트되므로 일반적인 경사 하강법보다 정확하지 않을 수 있다. SGD에 대한 업데이트 규칙은 일반 경사 하강법의 업데이트 규칙과 유사하지만 훈련 데이터의 임의 하위 집합에서 추정된 가중치에 대한 손실 함수의 편미분을 사용한다. 여기서 w_i는 i번째 가중치, α는 학습률, m은 훈련 예제의 수, x_j는 j번째 입력 예제, y_j는 해당 출력 레이블, L은 손실 함수이다. dL/dw_i(x_j, y_j)는 j번째 훈련 예제에서 평가된 i번째 가중치에 대한 손실 함수의 편미분이며, 가중치 업데이트는 알고리즘이 손실 함수의 최소값으로 수렴할 때까지 특정 수의 에포크 동안 반복적으로 수행된다.


w_i = w_i - α * [1/m * Σ_j (dL/dw_i(x_j, y_j))]


서로 다른 최적화 알고리즘의 성능을 비교하기 위해 수렴 속도, 정확도 및 계산 효율성과 같은 다양한 방법을 사용할 수 있다. 특정 문제에 대해 일부 알고리즘이 다른 알고리즘보다 더 잘 수행될 수 있지만 모든 경우에 적용되는 단일 솔루션은 없다. 문제의 특성과 제약 조건에 따라 적절한 최적화 알고리즘을 선택하는 것이 중요하다. 요약하면 경사 하강법은 AI에서 널리 사용되는 최적화 알고리즘이지만 특정 문제에 더 빠르고 정확한 성능을 제공하는 알고리즘이 존재한다. 이러한 최적화 알고리즘은 풀려는 문제와 속도, 정확도 및 계산 효율성 간의 균형을 확인하고 선택해야 한다.





5장 실생활에서 경사 하강법의 사용


실생활에서 경사 하강법이 사용되는 것으로는 손으로 쓴 숫자를 학습하는 인공 신경망에 사용된다. 이 신경망은 입력 이미지의 다양한 부분을 인식하도록 훈련된 뉴런층으로 구성된다. 신경망을 훈련시키려면 각 계층의 뉴런을 연결하는 가중치를 조정해야 하는데 각 입력 이미지에 대한 예측 레이블과 실제 레이블 간의 차이를 최소화하면 된다. 이는 교차 엔트로피 손실 함수라는 비용 함수를 사용하여 수행하는 것이 좋다. 교차 엔트로피 손실함 수는 다음과 같은 형태로 나타낸다.


L = -1/m * Σ_i (y_i * log(h(x_i)) + (1-y_i) * log(1-h(x_i)))


여기서 Σ_i는 모든 교육 예제 i에 대한 합계를 나타내고, y_i는 i번째 교육 예제의 실제 레이블이며, h(x_i)는 i에 대한 모델의 예측된 출력(즉, 확률)이다. α는 학습률이고 log는 자연 로그이며 m은 총 훈련 예제의 수이다. 경사하강법에 대한 가중치 업데이트 규칙은 다음과 같다.


w_i = w_i - α * [1/m * Σ_j(dL/dw_i(x_j, y_j))]


실제로 손으로 쓴 숫자를 학습하고 분류하는 인공지능은 PyTorch를 이용하여 다음과 같이 구현할 수 있다.

코드는 링크로 대체합니다. Colab에 가입해서 직접 돌려보세요




구체적으로 해당 코드에 대한 설명은 아래와 같다

1) 먼저 필요한 모듈을 가져온다.

torch: 메인 PyTorch 모듈

torch.nn: 많은 신경망 관련 함수 및 클래스를 포함하는 하위 모듈

torch.optim: 다양한 최적화 알고리즘을 포함하는 하위 모듈

torchvision.datasets: 작업할 수 있도록 미리 로드된 데이터 세트를 제공하는 모듈

torchvision.transforms: 정규화와 같은 이미지 변환을 제공하는 모듈

그런 다음 nn.Module에서 상속되는 Net이라는 클래스를 정의합니다. 이 클래스는 신경망 모델을 나타냅니다.

__init__ 함수에서 신경망의 계층을 정의합니다. 우리 모델에는 첫 번째 레이어에 784개의 입력 뉴런과 100개의 출력 뉴런이 있고 두 번째 레이어에 100개의 입력 뉴런과 10개의 출력 뉴런(각 숫자 클래스에 대해)이 있는 두 개의 완전히 연결된 레이어(nn.Linear)가 있습니다.

'forward' 함수에서 신경망의 순방향 패스를 정의합니다. 먼저 x.view(-1, 784)를 사용하여 입력 이미지를 평탄화하고 시그모이드 활성화 함수로 첫 번째 완전 연결 레이어를 적용합니다. 그런 다음 각 숫자 클래스에 대한 로짓을 출력하는 활성화 함수 없이 두 번째 완전 연결 계층을 적용합니다.



2) 다음으로 데이터를 정규화하는 'transform' 변수를 정의하고 배치 크기가 64인 MNIST 교육 데이터 세트를 로드하는 'DataLoader'를 생성합니다.

3) 신경망 모델의 인스턴스인 'net'과 훈련 중에 신경망의 매개변수를 업데이트할 옵티마이저('optim.SGD')를 생성합니다.

4) 훈련 데이터를 배치로 반복하여 10 epoch 동안 신경망을 훈련합니다.
각 배치에 대해 먼저 optimizer.zero_grad()를 사용하여 옵티마이저에서 그래디언트를 0으로 만듭니다.
그런 다음 'output = net(data)'를 사용하여 예측된 출력을 얻기 위해 신경망 모델을 통해 데이터 배치를 전달합니다. *nn.CrossEntropyLoss()를 사용하여 예측 출력과 ground truth 레이블 간의 손실을 계산하고 loss.backward()를 사용하여 네트워크를 통해 손실을 역전파합니다.
마지막으로 optimizer.step()을 사용하여 신경망의 매개변수를 업데이트합니다.

5) 학습 후 테스트 데이터 세트를 로드하고 'DataLoader'를 생성하여 크기 10의 배치로 데이터를 로드합니다.
images, labels = next(iter(test_loader))를 사용하여 10개의 테스트 이미지의 첫 번째 배치에 대해 예측하고 outputs = net(images)를 사용하여 훈련된 신경망에 전달합니다.
_, prediction = torch.max(outputs, 1)을 사용하여 최대 로짓 값을 취하여 각 이미지에 대한 예측 레이블을 얻습니다.
마지막으로 print('Predicted:', prediction) 및 print('Actual: ', labels)를 사용하여 테스트 이미지의 첫 번째 배치에 대한 예측 레이블과 실제 레이블을 인쇄합니다.


6장 결론


본 연구를 통해 미분이 인공지능 학습에 어떻게 사용되는지를 경사하강법을 이용하여 알아보았다. 본 연구에서는 경사 하강법의 수학적 정의와 경사 하강법이 실제로 어떻게 사용되는지 손글씨 예제를 통해 확인하였다. 또한 경사 하강법을 이용하여 확장된 방법인 SGD도 알아 보았다. 특히, SGD를 이용하여 손글씨를 학습하고 분류하는 인공지능을 PyTorch를 통해 코드로 구현해 보았다. 본 연구를 진행하면서 인공지능과 수학의 깊은 관계에 대해 이해할 수 있었고 앞으로의 학습 방향을 다음으로 정리할 수 있다. 첫째, 기본적인 대수학과 미적분학, 통계학에 대한 탄탄한 이해가 필요하다. AI의 핵심 구성 요소인 기계 학습 및 최적화의 기본 원칙은 수학을 기초로 하고 있어서 심도있는 이해가 필수적이다. 특히, 미적분학에서는 미분과 적분을 잘 이해하는 것이 중요한데, 경사하강법을 포함하여 많은 최적화 알고리즘에서 사용되는 경사의 개념을 이해하는 데 유용하다.



둘째, 통계학에서는 확률론과 통계적 추론을 잘 이해야 한다. 이는 다양한 유형의 데이터 분포를 이해하고 확률 분포를 사용하여 이를 모델링하는 방법과 통계 학습의 개념을 이해하는 데 유용하다. 이러한 주제에 대한 탄탄한 기초가 마련되면 AI에 적용되는 방식을 탐색할 수 있습니다. 예를 들어 미적분과 통계를 사용하여 변수 간의 관계를 모델링하는 기본 기계 학습 알고리즘인 선형 회귀에 대해 배울 수 있다. 여기에서 확률적 경사 하강법과 같은 최적화 알고리즘을 사용하여 복잡한 신경망을 구축하고 훈련하는 딥 러닝과 같은 고급 주제를 탐색할 수 있다. 또한 의료, 금융 및 운송과 같은 다양한 산업에서 AI가 어떻게 사용되고 있는지, 그리고 최적화가 이러한 애플리케이션의 정확성과 효율성을 어떻게 개선하는지 살펴볼 수 있다.

본 연구를 시작으로 앞으로 수학 외에도 인공지능 기술에 대해 연구(탐구)를 하고자 한다. AI 최적화의 향후 방향과 관련하여 떠오르는 추세 중 하나는 보상과 처벌을 기반으로 환경에서 결정을 내리도록 에이전트를 훈련시키는 강화 학습의 사용이다. 또 다른 추세는 학습 방법을 학습하도록 모델을 교육하여 시간이 지남에 따라 자체 성능을 향상시키는 메타 학습을 사용하는 것이다. 본 연구를 마무리하면서 느낀 점은 수학, 특히 미적분학 및 통계학의 탄탄한 기초는 AI 최적화 기술을 이해하고 적용하는 데 필수적이라는 것이다. 인공지능의 이론을 이해하고 적용해 보는 데 온라인과 교과서와 같은 많은 리소스를 사용할 수 있었다. 이번 연구를 기반으로 수학과 AI 및 프로그램에 대한 깊은 학습과 이해를 통해 우리나라의 AI 최적화 분야에 기여하고자 한다.

전체 0

    전체 11
    번호제목작성자작성일추천조회
    공지사항
    원하는 주제를 받지 못했다면???
    AMCU | 2023.04.17 | 추천 0 | 조회 298
    AMCU2023.04.170298
    공지사항
    이제, NEO의 세특 주제 LAB 결과물을 txt로 저장할 수 있습니다.
    AMCU | 2023.04.06 | 추천 0 | 조회 115
    AMCU2023.04.060115
    공지사항
    예시) 제목 : 인공지능 최적화를 위한 미분의 사용
    AMCU | 2023.04.06 | 추천 3 | 조회 344
    AMCU2023.04.063344
    8
    비밀글 챗GPT 사용법 질문드립니다. (1)
    뭉게구름 | 2023.06.02 | 추천 0 | 조회 3
    뭉게구름2023.06.0203
    7
    프롬프트 (1)
    랄로 | 2023.06.02 | 추천 1 | 조회 34
    랄로2023.06.02134
    6
    프롬프트공유합니다 (1)
    호호맘 | 2023.05.27 | 추천 1 | 조회 52
    호호맘2023.05.27152
    5
    프롬프트 공유합니다 (1)
    김정현 | 2023.05.09 | 추천 0 | 조회 210
    김정현2023.05.090210
    4
    프롬프트 (1)
    조태영 | 2023.04.20 | 추천 0 | 조회 260
    조태영2023.04.200260
    3
    프롬프트 결과값들이 사라지지 않고 기록 유지되었음 좋겠습니다. (1)
    이혜원 | 2023.04.17 | 추천 0 | 조회 236
    이혜원2023.04.170236
    2
    프롬프트 공유 (1)
    이민주 | 2023.04.17 | 추천 2 | 조회 290
    이민주2023.04.172290
    1
    법학과 프롬프트 공유 (1)
    ㅎㅎ | 2023.04.17 | 추천 0 | 조회 284
    ㅎㅎ2023.04.170284