본문 바로가기

문제

한계를 극복한 LSTM 【5】RNN 기본 다지기 / 실무에서 활용되는 LSTM 이해하기 한계를 극복한 LSTM 작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com 더보기
RNN의 한계 【5】RNN 기본 다지기 / 실무에서 활용되는 LSTM 이해하기 RNN의 한계 RNN의 구조를 다시 한번 보자. RNN은 계속해서 같은 셀의 반복으로 구성된다. 반복 횟수는 입력의 길이(sequence)에 따라 달라지는데 입력의 길이가 길면 그만큼 시간 축이 길게 펼쳐지므로 신경망이 깊어진다. 즉, 신경망의 깊이는 입력에 의존적이라고 할 수 있다. 또한 RNN의 동작은 아래의 수식과 같이 표현할 수 있었는데 마치 양파처럼 이전 타임스텝들이 가중치로 겹겹이 쌓인 구조를 띄었다. 이렇게 RNN은 이전 타임스텝의 모든 입력을 참조하는 특징을 가지는데 다시 말하면 서로 다른 층들이 매개변수를 공유한다고 할 수 있다. RNN의 이러한 특징으로 인해 훈련에 큰 어려움이 발생한다. 입력 순차열이 길다면 상황은 더욱 .. 더보기
Overfitting이 무엇일까? 【1】Deep Learning 시작하기_규제화라는 게 있다 Overfitting이 무엇일까? 우리는 지금까지 신경망의 학습 성능을 높이기 위한 기술들을 알아보았다. 신경망은 데이터를 기반으로 학습을 시키는데 이 때 학습한 결과를 평가하는 과정이 반드시 필요하다. 일종의 시험을 통해 신경망의 학습 결과를 확인하는 것이다. 학습에 사용되는 데이터를 학습 데이터(Trainset)라고 하고 평가에 사용되는 데이터를 시험 데이터(Testset)라고 하는데 신경망을 충분히 학습시키다 보면 학습데이터를 너무 ‘완벽 학습’ 하여 학습에 등장하지 않은 데이터는 맞추지 못하는 상황이 발생하게 된다. 이를 오버피팅(혹은 과적합, Overfitting) 상태라고 부른다. 즉, 오버피팅이란 주어진 데이터를 지나치게 학습한 나머.. 더보기
Adagrad Optimizer (Adaptive Gradient) 【1】Deep Learning 시작하기_최적화가 가장 중요하다! Adagrad Optimizer (Adaptive Gradient) “SGD의 탐색 거리를 개선해보자! 처음엔 크게, 나중엔 작게! 맞춤형 학습률 주겠어!“ 이번에는 탐색 거리에 대한 문제를 해결하고자 등장한 Adagrad(Adaptive Gradient, Adagrad) 최적화에 대해서 설명하겠다. 수식에서 α라고 표시하는 학습률은 가중치의 최적 값을 탐색할 때 얼만큼 이동할지 결정하는 중요한 변수이다. 학습률이 너무 작으면 시간이 오래 걸리고, 너무 크면 최적 값을 찾지 못하고 치솟게 된다(발산한다고 말한다). 학습률 값은 초반에 큰 값을 주다가 점차 값을 줄이는데 이는 최적 값에 근접할 시 이동거리를 짧게 해 지나치지 않으려는 것이다... 더보기
최적화(Optimizer)가 뭐였지? 확률적 경사 하강법(SGD) 【1】Deep Learning 시작하기_최적화가 가장 중요하다! 최적화(Optimizer)가 뭐였지? 확률적 경사 하강법(SGD) 여러분은 1.2 경사 하강법이 기억나는가? 경사 하강법은 오차를 가장 작게 만드는 방향으로 가중치를 업데이트 하면서 최적 값을 찾는 방법이다. 이렇게 파라미터의 최적 값을 찾는 문제를 최적화(optimizer)라고 하며 최적화는 정답에 가까운 출력을 만드는 신경망의 목표인만큼 중요하지만 어려운 문제다. 앞에서 최적화의 방법으로 경사 하강법을 언급했는데 시간이 지나면서 더욱 발전된 기술들이 등장하기 시작했다. 지금부터 그 종류를 하나씩 살펴보겠다. 확률적 경사 하강법(SGD) “GD보다 조금 보되 빠르게 찾자!“ 우리가 앞에서 다룬 경사 하강법(Gradient Descent)은.. 더보기
신경망 모형의 기본 구조 【1】Deep Learning 시작하기_신경망 모형(Neural Networks) 신경망 모형의 기본 구조 우리는 앞에서 신경망의 구조를 여러 번 언급했었다. 신경망은 다층퍼셉트론의 발전된 형태로 입력층-은닉층-출력층 구조인 다층퍼셉트론에서 은닉층을 두개 이상 쌓은 구조를 가진다. 은닉층의 개수가 많아지면 신경망이 깊어졌다(deep)이라고 하며 이를 심층 신경망(Deep Nerual Network, DNN)이라고 한다. 이번장에서는 딥러닝으로 넘어가기 전 마지막으로 신경망의 구조에 대해서 정리해보는 시간을 가질것이다. 처음 소개하는 내용이 아니므로 질문에 대답해보면서 따라와주기를 바란다! 아래의 그림은 가장 기본적인 신경망의 구조라고 할수 있는 은닉층이 2개인 구조의 신경망 그림이다. 몇가지 퀴즈를 통해.. 더보기
퍼셉트론이 마주친 장벽 【1】Deep Learning 시작하기_딥러닝이 알고 싶다! 퍼셉트론이 마주친 장벽 퍼셉트론은 출력 값이 1 또는 0이므로 선형 분류(linear classifier) 모델이라고 볼 수 있다. 선형 분류는 평면 상에 선을 긋고 그 선을 기준으로 A와 B로 분류하는 것을 말한다. 위의 그림에서 보다시피 2차원 ○과 □를 선으로 분류할 수 있는 문제를 선형 문제라고 한다. 그렇다면 다음 문제를 함께 생각해보자. 위 그림처럼 종이 위에 검은 점과 흰 점이 놓여 있다면 선 하나만을 이용해서 두 종류의 점을 분류할 수 있을까? 아무리 선을 그려보아도 선 하나만으로는 검은 점과 흰 점을 분류할 수 없을 것이다. 이것이 퍼셉트론의 한계로 많이 등장하는 XOR(exclusive OR) 문제다. XOR문제는 논리회로에 .. 더보기
[웹크롤링] 텍스트 입력 시 글자가 생략되거나 오타가 나는 문제, 해결 방법은? 크롤링할 때, 예를 들어 검색창에 지정된 텍스트를 입력하도록 할 때, 입력 속도가 너무 빨라서 그런지 중간에 오타가 나거나 글자가 생략되는 경우가 있을 수 있습니다. 예를 들어, 아래는 네이버 검색창에 "안녕하세요! 디노랩스 블로그입니다. 언제든지 방문해주세요:D" 라는 텍스트를 작성하는 코드인데요, from bs4 import BeautifulSoup from selenium import webdriver import time path = "c:/temp/chromedriver_240/chromedriver.exe" ###chomedriver의 경로 위치 driver = webdriver.Chrome(path) driver.get("http://naver.com") time.sleep(2) # 2초기달.. 더보기
[파이썬] 'cp949' codec can't decode byte 0xec in position 0: illegal multibyte sequence 에러, 해결 방법은? csv 파일을 열 때, 'cp949' codec can't decode byte 0xec in position 0: illegal multibyte sequence 와 같은 에러가 뜨는 경우가 있는데요, 이러한 경우는 인코딩에서 문제가 발생했다는 뜻입니다. 따라서 만약 csv 파일을 불러왔을 때 인코딩 설정 없이 다음과 같이 코드를 작성했었다면, import csv f = open(r"C\test\sample.csv") f_csv = csv.reader(f) 아래와 같이 코드를 수정해보시기 바랍니다. import csv f = open(r"C\test\sample.csv", encoding="utf-8") # encoding="utf-8" 추가하기 f_csv = csv.reader(f) 더보기