목록Python (173)
오답노트

수치 미분은 단순하고 구현하기도 쉽지만 계산 시간이 오래 걸린다는게 단점이다. 이번엔 가중치 매개변수의 기울기를 효과적으로 계산하는 '오차역전파법(backpropagation)'을 배워보자. 오차역전파법을 제대로 이해하는 방법으로는 수식을 통한 것과 계산 그래프를 통한 것이 있다. 전자 쪽이 일반적인 방법으로, 특히 기계학습을 다루는 책 대부분은 수식을 중심으로 이야기를 전개한다. 하지만 계산 그래프를 사용하면 시각적으로 이해할 수 있다. 계산 그래프 계산 그래프는 계산 과정을 그래프로 나타낸것이다. 여기서 그래프는 복수의 노드와 엣지(노드 사이의 직선)로 표현된다. 계산 그래프로 풀다 계산 그래프는 계산 과정을 노드와 화살표로 표현한다. 노드는 원으로 표기하고 원 안에 연산 내용을 적는다. 또, 계산 ..

학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것이다. 신경망이 학습할 수 있도록 해주는 지표는 손실 함수다. 손실 함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표다. 데이터에서 학습한다 데이터 주도 학습 기계학습에서는 사람의 개입을 최소화하고 수집한 데이터로부터 패턴을 찾으려 시도한다. 데이터에서 특징을 추출하고 그 특징의 패턴을 기계학습 기술로 학습하는 방법이 있다. 여기서 말하는 특징은 입력 데이터에서 본질적인 데이터를 정확하게 추출할 수 있도록 설계된 변환기를 가리킨다. 하지만 문제에 적합한 특징을 쓰지 않으면 혹은 특징을 설계하지 않으면 좀 처럼 좋은 결과를 얻을 수 없다는 뜻이다. 신경망의 이점은 모든 문제를 같은 맥락에서 풀 수 있다. 세부..

퍼셉트론은 복잡한 함수도 표현할 수 있다. 하지만 가중치를 설정하는 작업 즉, 원하는 결과를 출력하도록 가중치 값을 적절히 정하는 작업은 여전히 사람이 수동으로 한다는 것이다. 그러나 신경망은 가충치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 성질이 있다. 퍼셉트론에서 신경망으로 신경망의 예 아래 그림은 신경망이다. 여기서 가장 왼쪽 줄은 입력층, 맨 오느쪽 줄은 출력층, 중간 줄은 은닉층이다. 은닉층의 뉴런은 입력층이나 출력층과 달리 사람 눈에는 보이지 않는다. 퍼셉트론 복습 퍼셉트론을 수식으로 나타 냈을때, b는 편향을 나타내는 매개변수고 뉴런이 얼마나 쉽게 활성화되느냐 제어한다. 한편, w1,w2는 각 신호의 가중치를 나타내는 매개변수로, 각 신호의 영향력을 제어한다. 위 그림은 퍼셉트론..

퍼셉트론이란 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력. 다만 퍼셉트론의 신호는 1 또는 0의 두 가지 값을 갖는다. 입력으로 2개의 신호를 받는 퍼셉트론이다. x1 과 x2 는 입력 신호 y는 출력 신호, w1,w2는 가중치다. 원을 뉴런 혹은 노드라고 부르고 입력 신호가 뉴런에 보내질 때, 각각 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 정해진 임계값를 넘어 설 때만 1을 출력한다. 이를 뉴런이 활성화한다고 표현한다. 임계값은 θ(세타,theta)로 표현한다. 수직은 아래와 같다. 퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여한다. 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용한다. 즉 가중치가 클수록 해당 신호가 중요하다! 단순한 논리 회로 ..

개요 개요 빅프로젝트를 위해서 네이버 카페 크롤링을 해야하는 상황이 생겼다. 그런데 하는 과정에서 어떻게 해야될지 조금 헤맸는데, 정리 해놓으면 좋을거 같아서 정리한다. 카페 접속 링크 크롤링 우선 네이버에서 VIEW 탭에 카페로 필터링한 결과이다. 해당 페이지는 스크롤을 내리면 10개씩 검색 결과를 추가로 가져온다. 개발자 도구에서 스크롤을 내렸을 때 보내는 요청을 확인해 봤다. 위 사진은 스크롤 했을 때만 필터링하여 받아온 데이터를 확인한 것이다. 보아하니 js로 함수를 만들어 놓고 스크롤을 내릴 때 함수를 호출해서 정보를 가져오는 것 같다. 이렇게 받아온 정보들에서 페이지에 출력된 카페들의 접속 url을 크롤링했다. 카페 게시글 크롤링 다음은 url에 접속하여 카페 내부의 게시글 내용을 크롤링해야한..

Media File Media File 은 유저가 업로드하는 정적 파일을 의미한다. Media File은 서비스를 해야지 유저가 업로드하므로 Static File 처럼 서비스 시, 개발 시를 구분하여 file을 생각할 필요는 없다. 유저가 업로드 했을때 Media File을 업로드 했을 때 Medai File이 저장될 위치만 지정하면된다. settings.py 에서 다음과 같이 정의하자. MEDIA_URL은 url로 접속할 때 사용하고, MEDIA_ROOT는 url로 접속했을 때 찾아가는 디렉토리이다. 하지만 개발할 때에는 위 경로를 자동으로 찾아가지 않는다. 그래서 아래와 같은 코드를 추가해서 개발할 때에도 찾아갈 수 있도록 해줘야한다. 아래 코드는 절대 앱의 urls.py가 아닌 프로젝트의 urls...

Static File static file은 정적인 자료를 의미하는데 HTML, CSS, JS, Django Template, Image 등을 의미한다. static file 위치는 앱 폴더 아래 static 폴더 또는 settings.py에 STATICFILES_DIRS에 지정한 곳 있다. https://docs.djangoproject.com/en/3.2/howto/static-files/ Django The web framework for perfectionists with deadlines. docs.djangoproject.com settings.py 에 STATICFILES_DIRS 변수가 없을 경우 위 경로를 참고하여 아래처럼 지정하도록 하자. 또 개발이 완료되고 서비스할 때, 위에서 설명한..

기본 View 이전 포스트에서 사용하던 View 형태는 함수 기반의 View를 만들었다. 또 Class 기반의 View도 작성할 수 있는데 아래에서 확인 해보자. views.py 에는 다음과 같이 Class 기반 View를 선언했다. urls.py 에는 다음과 같이 위 View를 호출하도록 한다. 보통 함수 기반 View에서 호줄하지 않는 as_view를 호출한다. as_view는 뭘까? 우선 class 기반 view가 View 클래스를 상속 받는 것을 알아야한다. get은 View 클래스에 있는 메소드로 GET요청이 있을 때 실행되는 함수이다. as_view또한 View 클래스 안에 선언되어 있는 메소드이다. https://ccbv.co.uk/projects/Django/4.1/django.views...

GET 과 POST HTML에서 요청을 하는 방식중에 GET 과 POST 라는 것들이 존재한다. 나중에 REST를 참고하여 공부해보자. GET은 요청정보 헤더에 담겨 전달되는 방식이다. 따라서 전달하려는 정보다 노출이 되고, 길이에도 제한이 있다. POST는 요청정보 바디에 담겨 전달되는 방식이다. 따라서 전달하려는 정보를 은폐할 수 있고, 길이 제한도 없다. 위에서 비교를 보면 POST가 더 좋아보이지만, GET은 정보를 조회할 때, POST는 정보를 생성할 때 자주 사용된다.(예외도 물론 존재함) CSRF (Cross-Site Request Forgery) 예전에는 GET방식으로 로그인도 하고 그래서 개인정보 유출이나 이런 것들이 취약했다고 한다. 그래서 POST 방법으로 로그인과 같은 민감한 정보들..

Manager Manager는 기본적으로 models.py 내 선언한 클래스는 objects로 사용 가능하다. 하지만 모종의 이유로 할당 받아 사용 할 경우 Manager로 할당하여 사용할 수 있다. 이 때, objects는 사용할 수 없다. test_manager = models.Manager() 위 코드를 models.py의 (models.Model 상속 받은)클래스 내에서 선언하면 test_manager는 objects 처럼 사용 할 수 있다. (단, 기존 object는 사용 불가능) QuerySet 위에서 설명한 Manager는 QuerySet이라는 객체다. 이는 메소드를 통해 테이블의 내용을 조회하거나 추가, 수정, 삭제가 가능하다. 기능만 확인하기 위해 웹페이지에 출력하지 않고 장고 쉘을 이용..