반응형

전체 글 42

[밑바닥부터 시작하는 딥러닝1] Ch6.가중치의 초깃값

대부분의 프레임워크에서 자동으로 지원해주기 때문에 모르고 넘어갈 수 있는 부분일 것 같다. 모델을 만들기 사용할 때, 우리는 따로  초기 가중치를 설정해주지 않는다. 그럼 아무 값이나 들어가는 것일까? 랜덤한 수로 시작해야하는 것은 맞기 때문에 아무 값이긴 하지만, 표준편차가 어떻냐에 따라서 그 효율성과 속도, 성능이 달라질 수 있다. 보통 학습을 할 때 오버피팅을 억제하여 성능을 높이는 방법이 "가중치 감소"이다. 가중치가 클수록 그 영향이 커지기에 오버피팅의 가능성이 높아진다. 따라서 가중치를 감소시키는 것이 좋은 방향이고 초깃값도 작을수록 좋을 것이다. 만약 초깃값이 0이라면 어떨까? 오차 역전파를 고려했을 때 모든 가중치가 똑같이 갱신되기 때문에 학습이 올바르게 진행되지 않음을 예측할 수 있다. ..

[밑바닥부터 시작하는 딥러닝1] Ch6.최적화 방법

앞서 배운 신경망 학습과 추론 과정은 큰 틀이라고 생각하면 될 것이다. 모델의 성능을 향상시키기 위해서는 다양한 요소를 고려해야하고, 성능을 높이기 위한 다양한 기술들이 연구되고 발전되어왔다. 먼저 살펴볼 기술은 최적화 방법이다.  -최적화 방법 (매개변수 갱신)1. SGD신경망 학습 파트에서 사용했던 방법은 SGD (확률적 경가 하강법)이었다. 손실함수에 대한 가중치의 미분값을 통해서 기울어진 정도를 확인하고, 그에 맞게 효율적으로 손실함수의 최솟값으로 향하도록 만들어주는 방법이었다.하지만 이 방법에는 한계점이 존재했는데 바로 anisotropy (비등방성) 그래프에 대해서는 좋지 못한 결과를 도출한다는 점이었다. 이것의 원인은 SGD가 그래프가 기울어진 방향으로만 갱신을 진행하기 때문이다. 또한 비등..

[밑바닥부터 시작하는 딥러닝1] Ch4.신경망 학습

이제 우리가 만든 "신경망"이 직접 학습을 하도록 만들어야한다. 그렇다면 신경망이 스스로 올바른 답을 찾아 나갈 수 있어야한다. 그 기준이 무엇일까? 그리고 올바른 방향은 어떻게 정해야할까?  -손실함수위에서 말한 것과 같이 신경망에게는 기준이 필요하다. 그 지표로 사용하는 것이 바로 손실함수이다. 학습을 다시 말하면 손실함수의 값을 최소로 만드는 과정인 것이다. 아래는 가장 많이 사용하는 손실함수들이다. 1. Mean Square Error (평균 제곱 오차)MSE는 단순하게 실제값과 출력값의 오차 제곱의 평균을 계산하는 방법이다. 직관적으로도 손실함수라고 이해가 될 것 같다. 공식과 구현은 아래와 같다. 2. Cross Entropy Error (교차 엔트로피 오차)교차 엔트로피 오차는 log함수를 ..

[밑바닥부터 시작하는 딥러닝1] Ch3.신경망

- 활성화 함수 Ch3에서 몰랐던 부분을 정말 많이 배웠다. 차근차근 정리해보고자 한다.이 장에서는 신경망을 앞서 배운 퍼셉트론과 비교하며 알기 쉽게 설명한다. 이전에 배웠던 퍼셉트론을 간략히 떠올려 보자.임계값을 좌변으로 넘겨서 편향 b로 바꿔서 표기했을 뿐이다. 이것을 좀 더 체계적으로 함수를 사용하여 나타내면, 이와 같이 될 것이다. 이러한 함수들을 활성화 함수라고 부르고 퍼셉트론에서는 결과값의 부호에 따라 0과 1 중 하나의 출력값을 주는 "계단함수"를 활성화 함수로 이용함을 알 수 있다.  하지만 신경망에서는 이 계단함수를 사용하지 않는다. 왜 그런지 처음 알게된 부분이라 기억에 매우 잘 남는다.위의 함수들이 인공 신경망에서 쓰이는 활성화 함수들이다. 계단 함수와 일반적인 공통점은 아래와 같다...

[밑바닥부터 시작하는 딥러닝1] Ch2.퍼셉트론

모두를 위한 딥러닝을 수강한 이후, 기초를 더욱 다지기 위해서 선택한 책이 바로 이 책이다. 프레임워크 없이 직접 만들며 다양한 함수들 그리고 기법들과 친숙해지려는 목적을 가지고 시작하게 되었다. 모두를 위한 딥러닝을 들으며 헷갈렸던 부분들 그리고 몰랐던 부분들을 정리해 볼 계획이다. 첫 장은 퍼셉트론이다. 신경망의 기초가 되는 개념이라고 할 수 있다. 위와 같이 노드가 입력을 받고, 각 입력에 고유한 가중치를 곱하고 그 합을 결과값으로 내놓는다.단순히 결과를 주는 것이 아니라 이미 정의된 임계값(책에서는 세타)과의 대소비교를 진행하고 크다 작다를 이진화하여 1 혹은 0의 결과를 출력한다.  사실 모두를 위한 딥러닝에서는 단지 편향 b를 wx에 더해준다고 이해를 하였는데, 그 편향이라는 것이 임계값(세타..

[백준] 1786번, 찾기 - Python

문제 이해문제 자체는 정말 단순하다. 긴 문자열이 쭉 주어지고, pattern이라는 짧은 문자열이 주어졌을 때 긴 문자열 안에서 pattern이 몇 번 반복되는지 찾는 문제이다. 하지만 단순한 문제에 그렇지 않은 설명 길이를 보면 어려운 문제임을 직감할 수 있다. 이 문제가 어려운 이유는 시간 복잡도 때문 일 것이다. 단순히 접근한다면 패턴 길이만큼을 패턴과 같은지 체크하면서 한 칸씩 전진하면 될 것이다. 물론 해결이 가능하지만 문제 설명에 쓰여 있는 것과 같이 시간 복잡도를 만족시킬 수 없다.더 효율적인 코드가 필요하고, 이를 위한 대표적인 문자열 알고리즘으로는 Boyer-Moore, Rabin-Karp, KMP 등이 있다. 그 중에서 이번에는 KMP 알고리즘으로 문제를 해결해보자.  실제 코드def ..

백준/문자열 2024.04.28

[백준] 7569번, 토마토3D - Python

7576번에 있는 2차원 "토마토" 문제를 풀고 나서여서 그런지 쉽게 해결할 수 있었다.차원이 하나 추가되기 때문에 H 방향의 인덱싱만 신경써주면, BFS 알고리즘으로 해결이 가능했다. 문제 이해가로, 세로가 주어진 격자가 H의 높이로 쌓여 있다. 토마토의 위치가 주어지고 "익은" 토마토와 "익지 않은" 토마토로 구분된다. 물론 비어있는 칸도 있을 수 있다는 점을 주의해야한다. 하루가 지나면 "익은" 토마토와 인접한 토마토들이 익는다. 여기서 "인접"은 위, 아래, 앞, 뒤, 오른쪽, 왼쪽 방향의 칸을 의미한다.  이미 익어있는 상태면 0, 모두 익는 것이 불가능하면 -1을 출력한다.  해설bfs 탐색을 해야한다는 점은 인접한 칸을 고려해야할 때부터 알 수 있다. n, m, h가 모두 100 이하이기 때..

[모두를 위한 딥러닝 시즌1] Lec12. NN의 꽃 RNN 이야기

이전에 배운 CNN은 우리 말로 순환 신경망이라고 부른다. 대표적으로 이미지 처리에 이용되고 있다. 단연 모든 데이터를 CNN으로만 처리할 수 없다. 데이터들마다 특징이 있는데 이전 데이터가 나중 데이터에 영향을 주는 형태의 경우는 일반적인 NN이나 CNN으로는 해결이 불가능하다. 이런 문제에 이용하는 신경망이 RNN이다. 대표적으로 언어를 처리하는 모델들이 이것을 기반으로 한다. 언어는 이전 단어를 기준으로 다음 단어를 유추할 수 있는 구조이기 때문에 이러한 모델을 사용한다. 모델을 연속적으로 그려보면 위의 그림과 같은데 각 layer에 input이 들어오기도 하지만 이전 layer에서 이용된 값이 사라지는 것이 아니라 그대로 다음 모델에 영향을 주는 형태이다. 이것을 식으로 나타내면 위와 같다. 현재..

[모두를 위한 딥러닝 시즌1] Lec11-02. ConvNet Max pooling 과 Full Network

저번 시간에는 CNN의 기본적인 구조와 어떻게 CNN을 이용한 모델을 만들고 사용할 수 있는지 알아보았다. 이번에는 CNN 모델에 이미지의 사이즈를 줄여주는 sub sampling 기법에 대해서 알아보려고 한다. 위의 그림과 같이 이 기법은 "Pooling"이라고 불린다. input으로 들어온 데이터에 pooling을 적용하면 그 사이즈를 줄일 수 있다. Pooling에는 Max pooling (가장 큰 값만 고름) Average pooling (receptive field 안의 평균값을 이용) Stochastic pooling Cross channel pooling 등이 있다. 강의에서는 max pooling을 예시로 살펴본다. CNN의 필터와 비슷하게 여기에도 필터가 존재한다. receptive fi..

[모두를 위한 딥러닝 시즌1] Lec11-01. ConvNet의 Conv 레이어 만들기

이제 우리는 머신러닝의 기본 개념과 딥러닝의 기초 그리고 모델의 효율을 높이기 위해 지금까지 발전해온 다양한 기법들을 알게 되었다. 어떤 모델이든 우리의 상상력만 더해진다면 충분히 만들 수 있다고 교수님이 강의에서 말하신다. 당연히 오랜 기간 연구를 걸쳐오면서 CNN, RNN 등 많은 분야에서 큰 역할을 한 모델들이 생겨났다. 남은 11강, 12강에서는 가장 기초과 되는 CNN과 RNN의 구조를 알아본다. CNN은 고양이가 이미지를 인식할 때 이미지에 따라 특정 뉴런만 반응하는 것을 보고 만들어진 인공 신경망이다. 아이디어는 이미지 파일에서 특정 사이즈의 필터를 이용하여 사이즈를 축소시켜 나가는 것이다. 필터가 무엇이고 어떻게 동작하는지 살펴보자. 특정 사이즈의 필터를 정의하면, 몇 칸을 건너뛰면서 필터..

728x90