분류 전체보기 446

적절한 하이퍼파라미터 값 찾기 및 구현 실습

적절한 하이퍼파라미터 값 찾기 및 구현 실습 신경망에는 하이퍼파라미터가 다수 등장.여기서 말하는 하이퍼파라미터는 뉴런 수, 배치 크기, 매개변수 갱신 시의 학습률, 가중치 감소 등이 존재. 적절한 값을 설정하지 못할 경우 모델 성능이 크게 떨어지기도 함.하이퍼파라미터 값은 매우 중요하지만, 그 값을 결정하기까지는 일반적으로 많은 시행착오를 겪음. 검증 데이터데이터셋을 훈련 데이터와 시험 데이터로 분리. 하이퍼파라미터의 성능을 평가할 때는 시험 데이터를 사용해서는 안됨.시험 데이터를 사용하여 하이퍼파라미터를 조정하면 하이퍼파라미터 값이 시험 데이터에 오버피팅되기 때문 하이퍼파라미터를 조정할 때는 하이퍼파라미터 전용 확인 데이터가 필요.하이퍼파라미터 조정 데이터를 일반적으로 검증 데이터라고 부름하이퍼파라미..

AI/DeepLearning 2025.11.19

오버피팅, 가중치 감소, 드롭아웃

오버피팅, 가중치 감소, 드롭아웃 오버피팅 오버피팅이란?신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태 기계 학습은 일반적으로 범용성 좋은 모델은 지향하나 훈련 데이터에는 없는 아직 보지 못한 데이터가 주어져도 바르게 식별해내는 모델이 바람직함.복잡하고 표현력 높은 모델을 만들 수는 있지만 그만큼 오버피팅을 억제하는 기술이 중요 오버피팅은 주로 다음과 같은 경우에 일어남매개변수가 많고 표현력이 높은 모델훈련 데이터가 적음 가중치 감소오버피팅 억제용으로 예로부터 많이 이용해온 방법 중 하나.학습 과정에서 큰 가중치에 대해서는 그에 상응하는 큰 페널티를 부과하여 오버피팅을 억제하는 방법.원래 오버피팅은 가중치 매개변수 값이 커서 발생하는 경우가 많기 때문...

AI/DeepLearning 2025.11.14

배치 정규화 Batch Normalization + Pytorch 실습

배치 정규화 Batch Normalization + Pytorch 실습 각 층의 활성화값 분포를 관찰해보며, 가중치의 초깃값을 적절히 설정하면 각 층의 활성화값 분포가 적당히 퍼지면서 학습이 원활하게 수행됨. 그렇다면 각 층이 활성화를 적당히 퍼뜨리도록 강제하면 더 좋지 않을까란 생각에서 배치 정규화가 출발함. 배치 정규화 알고리즘 2015년에 제안되었으나 많은 연구자가 현재까지도 사용하고 있음. 배치정규화의 장점학습을 빨리 진행할 수 있음.초깃값에 크게 의존하지 않음.오버피팅을 억제 (드롭아웃 등의 필요성 감소) 배치 정규화의 효과대부분의 초깃값 표준편차에서 학습 진도가 빠름.배치 정규화를 이용하지 않은 경우 초깃값이 잘 분포되지 않으면 학습이 전혀 되지 않는 경우도 있음. PyTorch를 이용한..

AI/DeepLearning 2025.11.13

신경망 학습에서 초기 가중치 설정

신경망 학습에서 초기 가중치 설정 신경망 학습에서 특히 중요한 것이 가중치의 초깃값 설정은 중요함.특히, 가중치의 초기값을 무엇으로 설정하는지에 따라서 신경망 학습의 성패가 달라질 수 있음. 목차초깃값을 0으로 설정은닉층의 활성화 값 분포Xavier 초깃값시각화 코드 샘플 초깃값을 0으로 설정 오버피팅을 억제해 범용 성능을 높이는 테크닉인 가중치 감소(weight decay) 기법을 소개하고자 함.가중치 감소는 가중치 매개변수의 값이 작아지도록 학습하는 방법으로 가중치의 값을 작게하여 오버피팅이 일어나지 않게 하는 것. 하지만, 가중치를 0으로 설정하면 학습이 올바로 이뤄지지 않음.왜냐하면 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문.가중치들은 같은 초깃값에서 시작하고, 갱신을 거쳐도 여전..

AI/DeepLearning 2025.11.13

SGD, Momentum, AdaGrad, RMSprop, Adam

SGD, Momentum, AdaGrad, RMSprop, Adam 가중치 매개변수의 최적값을 탐색하는 최적화 방법, 가중치 매개변수 초깃값, 하이퍼파라미터 설정 방법 등 신경망에서 중요한 주제.오버피팅의 대응책인 가중치 감소와 드롭아웃 등의 정규화 방법도 간략히 설명하고 구현. 마지막으로 최근 많은 연구에서 사용하는 배치 정규화도 짧게 알아보고자 함. 목차SGD (확률적 경사 하강법)Momentum (모멘텀)AdaGradRMSpropAdam각각의 시각화 코드 샘플 SGD (확률적 경사 하강법) 확률적 경사 하강법이란 단순한 방법인데, 매개변수의 기울기를 구해 매개변수 값을 갱신하는 일을 할 때 단순하고 구현이 쉽지만, 문제에 따라서 비효율적일 때가 있음.등고선x축 방향으로 길쭉한 타원형 등고선이 나..

AI/DeepLearning 2025.11.09

활성화 함수 계층 기본 구현 정리

활성화 함수 계층 기본 구현 정리 신경망을 구성하는 층을 각각에 대해서 기본적인 것들을 정리. 아래 샘플 코드에서 사용되는 주요 Numpy와 Python 문법 정리이거 모르면 아래 코드 읽는데 상당히 어려움.주로 사용하는 언어가 정적 타이핑언어인데, 동적 타이핑 언어를 사용하는 경우 사고 전환이 아직까지도 좀 불편한 부분이 있어서 차이점을 느끼는 부분을 위주로 정리하고자 함. 1. 파이썬에서는 인스턴스 변수는 __init__에서 선언하는 것이 원칙.하지만 새롭게 만든다고해서 동작하지 않는것은 아님. class SomeClass: def __init(self): self.mask = None 2. numpy에서 불리언 인덱싱 문법True/False 배열을 이용해서 원하는 위치만 선택하는 ..

AI/DeepLearning 2025.11.09

경사하강법 (Gradient Descent)

경사하강법 (Gradient Descent) 신경망 학습의 핵심은 가중치(weight)를 최적의 값으로 찾아내는 것.이때 손실(loss)을 최소화하는 방향으로 가중치를 조금씩 조정하는 알고리즘이 바로 경사하강법(Gradient Descent)임. 경사하강법이란? 최적의 매개변수를 찾아내기 위해 손실 함수가 최솟값이 될 때의 매개변수 값을 찾기 위한 방법매개변수 공간이 광대하여 어디가 최솟값이 될 지 짐작할 수 없는 경우 기울기를 이용해 함수의 최솟값 혹은 가장 작은 것을 찾으려고 하는 방법 기울기를 따라 나아가지만, 그 지점이 정말 최솟값인지는 보장할 수 없음. 함수가 극솟값, 최솟값, 또 안장점이 되는 장소에서는 기울기가 0임. 평평한 곳으로 파고들면서 고원이라 하는 학습이 진행되지 않는 정체기에 빠..

AI/DeepLearning 2025.11.09

오차역전파

오차역전파 신경망 학습에서 가중치 매개변수의 기울기를 구할 때 수치 미분을 이용해 구할 수 있는데, 수치 미분은 단순하고 구현하기도 쉽지만 계산이 오래 걸린다는 단점이 존재.매개변수의 기울기를 효율적으로 계산하는 방법으로 오차역전파라고 함. Input에서 Output으로 값을 전파하면서 보내는 것을 순전파(forward propagation)이라고 부르며, 값을 보내는 것.역전파는 반대로 Output에서 Input 방향으로 향하며, 가중치를 재업데이트 함. Input에서 Ouput이 나오는 과정에서 결과값은 오차(Error)를 가지는데, 역전파는 다시 오차를 역방향으로 은닉층과 Input 방향으로 보내면서 가중치를 계산하면서 Output에서 발생했던 오차를 돌려보냄. 1번 학습하는 것을 1 epoch라..

AI/DeepLearning 2025.11.05

UNUserNotificationCenter `requestAuthorization`에서 발생하는 희귀한 버그 현상 분석

UNUserNotificationCenter `requestAuthorization`에서 발생하는 희귀한 버그 현상 분석 사내에 2021년에 작성된 코드에서 앱이 멈추는 상황이 발생해서 사례 분석앱 시작 직후가 아닌, 사용자에게 별도 페이지에서 안내 후 버튼 클릭을 통한 권한 요청의 동선 상세한 분석 링크https://github.com/lgvv/unusernotificationcenter-requestauthorization-blocking-simulation GitHub - lgvv/unusernotificationcenter-requestauthorization-blocking-simulation: Investigating Rare Bugs in UNUserNotificationCeInvestiga..

l-value, r-value

l-value, r-value프로젝트 내 C, C++, objective-c, swift 코드가 존재하여 이를 분석하면서 개념 정리. 용어 정리 L-value (locator value)란?메모리상의 위치(location) 를 가리키는 표현식.: 대입의 왼쪽에 올 수 있는 것(항상은 아님). 변수, 배열 원소, 프로퍼티, deref(*p) 등.: 즉, 여기에 값을 저장할 수 있음. R-value (read value / right value)란? 실제 값(리터럴, 계산 결과, 일시적인 임시객체).: 보통 대입의 오른쪽에 오는 것. 임시값이므로 주소를 갖지 않거나 곧 사라짐.: 즉, 이건 읽을 수는 있지만, 직접 이곳에 값을 저장할 수는 없다. ** 참고 ** : 현대 언어는 이분법을 확장.: 예: C++..