인프런 커뮤니티 질문&답변

프로그램강신혜님의 프로필 이미지
프로그램강신혜

작성한 질문수

TensorFlow 2.0으로 배우는 딥러닝 입문

TensorFlow 2.0을 이용한 선형 회귀(Linear Regression) 알고리즘 구현

선형 회귀 모델에 대해서 질문 있습니다

해결된 질문

작성

·

127

0

강좌 TensorFlow 2.0을 이용한 선형 회귀 알고리즘 구현 편에서 나오는 선형 회귀 모델을 실행하였을 때 결과값이 계속하여 미세하게 변화하는 이유가 궁금해서 질문합니다. 수학적 계산식을 항상 동일하니 계산값 역시 항상 동일해야 하는 것 아닌가요?

답변 2

0

AISchool님의 프로필 이미지
AISchool
지식공유자

안녕하세요~. 반갑습니다.
머신러닝 방법론은 Gradient Descent를 통해서 초기에 랜덤한 파라미터 W,b값을 최적의 파라미터 W, b값에 가깝게 반복을 통해서 점진적으로 개선하며 최적값을 찾아가는 방법론입니다.따라서 최적화 결과로 파라미터의 Global Optima에 가까운 값을 찾는 것이고, 선형회귀 예제와 같이 극단적으로 쉬운 문제에 대해서는 항상 Global Optima와 근사한 값으로 최적화가 완료되지만 복잡한 문제에 대해서는 항상 Global Optima와 근사한 값으로 최적화가 완료된다는 보장이 없습니다. (즉, 다양한 Local Optima에 빠지게 됩니다.)
즉 정리하면, Gradient Descent를 통한 머신러닝 모델 최적화는 알고리즘 구조상 매번 최적화 결과로 얻은 파라미터 W,b가 약간씩 달라지게되고, 결과적으로 최적화가 끝난 파라미터 W,b를 이용한 결과값도 약간씩 달라지게됩니다.
좋은 하루되세요.감사합니다.

답변 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.

선형 회귀 모델이 실행할 때마다 결과값이 미세하게 변하는 현상은 몇 가지 이유로 발생할 수 있습니다. TensorFlow 2.0을 포함한 대부분의 딥러닝 프레임워크는 모델을 학습할 때 초기 가중치를 무작위로 설정합니다. 이 초기 가중치가 매 실행 때마다 다르기 때문에, 동일한 선형 회귀 모델이라 해도 실행할 때마다 조금씩 다른 결과를 얻을 수 있습니다.

또한, 딥러닝 알고리즘은 주로 경사 하강법(Gradient Descent) 같은 최적화 알고리즘을 사용하여 손실 함수(loss function)의 최솟값을 찾습니다. 이 과정에서도 미분과 같은 수학적 연산을 반복하게 되는데, 컴퓨터가 실수를 표현하는 방식에 따라 매우 미세한 수치의 변화가 발생할 수 있습니다. 이런 작은 차이가 쌓이면서 최종 결과에 영향을 미치게 됩니다.

그럼에도 불구하고, 이러한 변동성은 모델의 성능에 일반적으로 큰 영향을 주지 않으멜 참고 부탁드립니다. 모델의 결과값에 일관성을 주고 싶다면, 학습 전에 난수 생성기의 시드 값을 설정하여 초기 가중치가 매번 동일하게 시작되도록 하는 방법을 사용할 수 있습니다. TensorFlow에서는 tf.random.set_seed() 함수를 사용하여 시드 값을 설정할 수 있습니다.

원하는 답변을 찾지 못하셨나요?
그럼 우측 하단의 ‘문의하기’ 에서 직접 문의해주세요.
최대한 빠르게 답변드리도록 하겠습니다!

프로그램강신혜님의 프로필 이미지
프로그램강신혜

작성한 질문수

질문하기