전체 글 150

[밑바닥부터 시작하는 딥러닝] 7장

합성곱 신경망(convolutional neural network, CNN) 다양한 곳에서 사용되고, 이미지 인식 분야에서 기초로 사용된다. 1. 전체 구조 기본 신경망 + 두개의 계층[합성곱 계층(convolutional layer), 풀링 계층(pooling layer)] 완전 연결(fully-connected, 전결합) : 인접하는 계층의 모든 뉴런과 결합 되는 연결 ex) Affine 계층 : 완전연결 신경망 기본 구조 : data - Affine - ReLU - Affine - ReLU - ... - Affine - Softmax -> 합성곱 구조 : data - Conv - ReLU - Pooling - ... - Conv - ReLU - Affine - ReLU - Affine - Softm..

[밑바닥부터 시작하는 딥러닝] 5장, 6장

오차역전파법 계산 그래프(computational graph) : 계산 과정을 그래프(노드,에지)로 나타낸 것. 계산을 그래프 왼쪽에서 오른쪽으로 진행하면, 순전파(Forward propagation) 그 반대를 역전파(backward propagation). 국소적 계산 : 각 노드간의 계산은 자신과 관련된 정보만으로 결과를 출력한다. 계산 그래프를 사용하는 이유 : 역전파를 통해서 변수의 변화에 따라 최종 결과가 어떻게 변하는지 알 수 있고, 중간 미분 결과를 공유가능하고, 다수의 미분을 효율적으로 할 수 있다. 연쇄법칙(chain rule) : 합성함수의 미분은 합성함수를 구성하는 각 미분의 곱으로 표현 가능한 성질과 동일하다. ex) x + y = t , t**2 = z 라고할때, dz/dx = ..

[HTTP 완벽가이드] 3장 HTTP 메시지

3.1 메시지의 흐름 HTTP 메시지는 HTTP 앱들간에 주고받은 데이터의 블록들이다. 이 데이터의 블록들은 내용과 의미를 설명하는 텍스트 메타정보로 시작하고, 선택적으로 데이터가 올 수 있다. 메시지는 클라이언트, 서버, 프록시 사이를 흐른다. 이때 메시지의 각 방향을 의미하는 '인바운드' 아웃바운드' '업스트림' 다운스트림' 의 용어들이 존재한다. 1. 원 서버 방향을 인바운드로 하여 송신 HTTP의 인바운드는 메시지가 원 서버로 향하는 것을 의미하고, 모든 처리가 끝난 뒤 메시지가 클라이언트에게 돌아오는 것을 아웃바운드로 이동한다 라고한다. 2. 다운스트림으로 흐르는 메시지 모든 HTTP 메시지는 강물같이 흘러, 발송자는 수신자의 업스트림, 수신자는 발신자의 다운스트림이다. 즉 모든 HTTP 메시지..

[밑바닥부터 시작하는 딥러닝] 4장

데이터 주도학습 : 알고리즘을 밑바닥부터 설계하는 대신, 데이터의 특징을 추출하고 그 특징의 패턴을 기계학습 기술로 학습하는 방법. 신경망 : 이미지의 특징을 사람이 설계하지않고, 기계가 스스로 중요한 특징을 학습한다. 훈련 데이터와 시험 데이터 : 훈련한 모델의 범용능력을 제대로 평가하기 위해, 훈련 데이터와 시험 데이터를 분리한다. 오버피팅 : 특정 데이터셋을 제대로 맞추지만, 다른 데이터셋에 엉망인 상태. 지나치게 한 데이터셋에 최적화 상태. 손실함수 : 최적의 매개변수 값을 탐색하기 위한 기준이 되는 지표. 평균제곱오차(Mean Squared Error, MSE) : 가장 많이 쓰이는 손실함수로 (출력값 - 정답) ** 2 의 총합 형태로 나타낸다. 교차 엔트로피 오차(Cross Entropy E..

[밑바닥부터 시작하는 딥러닝] 1~3장

퍼셉트론 알고리즘 : 신경망(딥러닝)의 기원이 되는 알고리즘으로, 다수의 신호를 입력받아 하나의 신호를 출력한다. 다수의 입력에 각각의 가중치를 곱한 값이 임계치를 넘어설 때 1 , 넘어서지 못할때 0 을 출력한다. ex) y = 0 (w1x1 + w2x2 theta) 임계치를 편향으로 변경가능하다. ex) y = 0 (b + w1x1 + w2x2 0 ) (theta = -b) 이를통해 AND, NAND, OR 게이트를 표현하는 퍼셉트론을 만들 수 있다. 퍼셉트론은 선형을 띄어 XOR 게이트를 표현 불가능 하지만, 층을 쌓아 다층 퍼셉트론(multi-layer perceptron)을 만들어 더 다양한 것들을 구현 가능하게 한다. 신경망 : 입력층 , 은닉층 ,출력층으로 나뉘어진 다층 퍼셉트론. 활성화 함..

[알고리즘 문제 해결 전략 #1] 4강 알고리즘의 시간 복잡도 분석

4.1 도입 알고리즘의 속도 측정은 보통 프로그램의 실행 시간으로 이야기 되지만, 기분이 되기에는 부적합하다. 왜냐하면 수행시간은 언어, 하드웨어, 운엉체제, 컴파일러 등 수많은 요소에 의해 바뀔 수 있기 때문이다. 1. 반복문이 지배한다. 알고리즘의 수행시간을 지배하는 것은 입력의 크기에 따라 수행되는 횟수가 정해지는 반복문이다. 4.2 선형 시간 알고리즘 1. 다이어트 현황 파악 : 이동 평균 계산하기 이동 평균(moving average)은 시간에 따라 변화하는 값들을 관찰할 때 유용하게 사용 할 수 있다. vector movingAverage1(const vector& A, int M){ vector

[HTTP 완벽가이드] 2장 URL과 리소스

2장 URL과 리소스 이 장에서 다음과 같은 것들을 다룬다. URL의 문법, 여러 URL 컴포넌트의 의미와 무엇을 수행하는지. 여러 웹 클라이언트가 지원하는 상대 URL, 확장 URL URL의 인코딩과 문자규칙, 공통 URL 스킴 콘텐츠의 자유로운 장소이동을 가능하게하는 URN을 포함한 URL의 미래 2.1 인터넷의 리소스 탐색하기 https://www.joes-hardware.com/seasonalindex-fail.html 과같은 URL을 불러오고 싶다고 해보자. - HTTP는 URL의 스킴 부분이고 리소스에 접근하는 방법을 나타낸다. - 그뒤로 이어지는 부분은 서버의 위치이고, 리소스가 어디에 호스팅 되어있는지 알려준다. - 마지막 부분은 리소스의 경로이고 서버에 존재하는 로컬 리소스들 중 어떤 리..

[HTTP 완벽가이드] 1장 HTTP : 웹의 기초

1.1 HTTP: 인터넷의 멀티미디어 배달부 HTTP 통신은 신뢰성 있는 정송을 보장한다. 1.2 웹 클라이언트 서버 웹 콘텐츠는 웹서버에 존재한다. 웹 서버는 HTTP 프토로콜로 의사사통하여 HTTP 서버라고 불린다. HTTP 클라이언트가 요청한 웹 콘텐츠를 제공한다. 흔한 HTTP 클라이언트는 웹브라우저이다. 1.3 리소스 웹서버는 웹 리소스를 관리하고, 제공한다. 리소스는 HTML파일과 같은 정적 파일에서 부터, 콘텐츠를 생성하는 프로그 램이 될 수도 있다. 1.3.1 미디어 타입 HTTP는 웹에서 전송되는 객체 각각에 MINE 데이터 포맷 라벨을 붙인다. 이 MINE 타입을 확인함으로 다룰수 있는 객체인지 확인한다. PRIMARY/SPECIFIC 의 형식으로 이루어져있다. 1.3.2 URI 웹 서..

[알고리즘 문제 해결 전략 #1] 3장 코딩과 디버깅에 관하여

이번장에서는 실용적인 코딩방법과 쉽게 디버깅 되지않는 예외에 관해서 다룬다. 3.1 도입 : 코딩의 중요성을 간과하지 말라 프로그래밍 대회에서 좋은 성적을 얻기위한 비결과 프로그래밍 대회에서 얻을 수 있는 가장 큰 소득은 간결하고 효율적인 프로그램을 작성하여 읽기 쉬운 코드를 짜는 것이다. 코드의 길이가 간결하고 명료할수록 디버깅이 편리하고 시간 또한 줄어들게 된다. 3.2 좋은코드를 짜기 위한 원칙 1. 간결한 코드 작성하기 코드가 짧을 수록 오타나 단순한 버그가 생길 우려가 줄고, 디버깅도 쉬워진다. 대회특성상 전역변수를 잘 활용하면 간결한 코드작성이 가능해진다. 당연하지만 노력이 필요하다고 생각함. 2. 적극적으로 코드 재사용하기 간결한 코드작성의 가장 직접적인 방법은 반복되는 코드를 모듈화하여 재..

[알고리즘 문제 해결 전략 #1] 2장 문제해결 개관

2.1 도입 2.2 문제 해결과정 1. 문제를 읽고 이해하기 조급한 마음으로 문제를 곁눈질하고 그림과 입출력으로 유추하려는 행동은 최악의 결과를 초래한다. 문제를 옳게 이해하더라도 사소한 제약조건을 놓쳐 풀 수 없는 문제가 흔하고, 대회에서는 작은 실수도 용서하지않는다. 내가 부족한 부분이 문제를 차근히 읽고 이해하는 부분 2. 재정의와 추상화 문제를 이해했다면 문제를 자신의 언어로 요약, 풀어쓰는 것이다. 추상화 과정을 통해 문제의 본질을 재구성하는 것은 문제를 쉽게 혹은 더욱 어렵게 만들기도한다. 따라서 어느부분을 추상화 할 것인지의 선택과 문제를 재정의 하는법을 고찰하는 것은 좋은 프로그래머의 필수 덕목이다. 3. 계획 세우기 4. 계획 검증하기 문제를 해결하기 위해서 계획과 검증을 하는부분. 2...