반응형

전체 글 209

[C Language] Chap.3 Control Flow - do-while loop(do-while 문)

do-while 문 do-while문은 실행문이 모두 끝난 다음에 expression을 평가한다. 즉 적어도 한번은 statement가 실행된다. do while은 while문과 헷갈리지 않게 {}를 꼭 써주는 것이 좋다. do statement while(expression); do-while문을 이용해서 정수를 문자로 바꾸는 프로그램을 작성해보자. void itoa(int n, char s[]){ int i, sign; if((sign = n) 0); if(sign < 0) s[i++] = '-'; reverse(s); // 배열을 거꾸로 출력하는 함수 } void reverse(c..

공업수학 요점정리 #20 - 선형대수학(Linear Algebra) - 행렬식의 계산 2 (Evaluation of Determinants 2)

큰 Determinant를 작은 Determinant의 합으로 표현할 수 있다. 이 방법을 expansion by cofactors라고 한다. $$|A| = \begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ \vdots \\ a_{k1} & a_{k2} & \cdots & a_{kn} \\ \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{vmatrix} = \begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ \vdots \\ a_{k1} & 0 & \cdots & 0 \\ \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{vmatrix} + ..

[Deep Learning : 딥러닝] 오차 역전파와 XOR 문제

딥러닝의 핵심은 가중치 변경에 있다. 딥러닝의 가중치 변경 방법을 오차 역전파(Back Propagation)라고 한다. 오차에 대한 함수를 만들고, 경사하강법을 통해 오차가 최소인 지점으로 parameter를 보정해주는 것을 반복한다. 그런데 이런 수정 과정이 입력층부터가 아닌 **출력층부터 시작해서 은닉층, 입력층까지** 가므로, 이걸 **오차 역전파**라고 이름붙이게 된다. 오차 역전파는 다음과 같은 과정을 거친다. 임의의 초기 가중치 W로 결과 y를 계산한다. 계산 결과 우리가 원하는 값에 대한 오차를 구한다. 경사 하강법을 통해 오차가 작아지는 방향으로 parameter를 업데이트한다. 일정 범위에 오차가 들어올 때까지 반복 (=오차 함수에 대한 미분값이 0이 될 때까지 = 가중치에서 기울기를 ..

[Deep Learning : 딥러닝] 퍼셉트론과 XOR 문제

퍼셉트론의 구조 입력값을 놓고 활성화 함수에 의해 일정한 수준을 넘으면 참, 그렇지 않으면 거짓을 내보내는 회로의 형태다. 아래와 같은 퍼셉트론을 서로 연결하고 조합하여 입력값에 대해 판단하는 것이 신경망의 기본 구조다. 앞에서 봤던 식 $y = ax + b$는 $y = wx + b$(가중합)으로 변경된다. $w$는 가중치, $b$는 바이어스라고 부른다. 이 가중합을 활성화 함수에 입력하면 1 혹은 0을 판단해서 출력한다. 대표적인 활성화함수가 앞에서 봤던 sigmoid function이다. 여러개의 퍼셉트론을 사용하여 xor연산을 표현할 수 있다. 여러개의 퍼셉트론을 사용한다는 것은 숨겨진 층 = 은닉층을 만드는 것이라고 생각하면된다. 은닉층은 입력되는 좌표평면을 왜곡하는 결과를 내놓는다. 은닉층을 여..

[C Language] Chap.3 Control Flow - While, For(While문, For문)

While, For While문은 while(expression) statement For문은 for(expr1; expr2; expr3) statement 이렇게 쓸 수 있고, For문을 While문으로 바꾸면 아래와 같은 형식으로 표현할 수 있다. expr1; while(expr2){ statement expr3; } expr1과 expr3는 대입 혹은 함수 호출이 가능하고, expr2는 논리 표현식이다. expr2에 사용되는 i등의 index 변수는 루프 안에서 변경이 가능하고, 루프가 종료됐을 때 그 값을 유지한다. expr1, expr2, expr3 중 어떤 것도 생략이 가능하다. 그러나 세미콜론 ;는 생략되면 안된다. for(; ; ) statement 이렇게 작성하면 statement를 무한..

[C Language] Chap.3 Control Flow - Switch (제어문 - switch 문)

Switch 문 switch (expression){ case const-expr : statement case const-expr : statement default : statement }if-else if-else와 같이 multiway 처리를 할 때 유용한 switch문. 다른 제어문과의 중요한 차이는 해당 case에 대한 statement를 실행해도 탈출하지 않는다는 것이다. 해당하는 case에 expression이 들어맞으면 해당하는 statement가 실행된다. default는 else와 같은 존재고, 있어도 되고 없어도 된다. 참고로 default와 cases는 작성되는 순서가 정해져있지 않다. break;는 switch 문을 탈출할 수 있게 한다. 만약 break;를 넣지 않는다고 하면 ..

[C Language] Chap.3 Control Flow - Statement, Block, if-else (제어문 - 문장, 블록, if-else문)

Control Flow 제어문 statement와 block x = 0 i++ printf(...) 와 같은 것에 ;이 붙으면 문장(statement)가 된다. {}는 declaration과 statement를 한 곳에 모아준다. 이를 compound statement 혹은 block이라고한다. block은 하나의 statement와 동일하게 취급한다. 그래서 for, if while, else 등에 쓰이는 {}에는 ;이 안붙는 것이다. If - else문 if (expression) statement1 else statement2 다들 알다시피 expression이 맞으면 statement1이 동작하고 아니면 statement2가 동작한다. 물론 else문은 넣어도 되고 안넣어도 된다. 참고로 expr..

[C Language] Sequence Point (시퀀스 포인트)

시퀀스 포인트 시퀀스 포인트는 C언어 계열의 언어에서 매우 중요한 개념이므로, 두가지 주요 문서를 번역해서 정리하고자 한다. 다음은 C FAQ 3.8번 질문을 번역한 것이다. A sequence point is a point in time at which the dust has settled and all side effects which have been seen so far are guaranteed to be complete. (시퀀스 포인트는 모든 연산에 의한 결과가 완료되는 지점을 의미합니다.) Sequence point는 크게 세가지가 있다. at the end of the evaluation of a full expression (a full expression is an expression..

공업수학 요점정리 #19 - 선형대수학(Linear Algebra) - 행렬식의 계산 1(Evaluation of Determinants 1)

Determinant를 구하는 방법 중 하나를 소개한다. 방법은 간단하다. 하나의 row/column을 하나의 원소를 제외하고 모두 0으로 만드는 것으로 시작한다. $A = \begin{bmatrix}a_{11} & 0 & 0 \\a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix}$에서 $a_{11}$를 포함하는 행과 열을 모두 지우고 남은 원소들을 이용해 determinant를 구한다. $=(-1)^{1+1} a_{11} \begin{bmatrix} a_{22} & a_{23} \\ a_{32} & a_{33} \end{bmatrix}$ $=a_{11}(a_{22}a_{33}-a_{23}a_{32})$ 정리하면 $|A| = (-1)^{..

[C Language] Assignment Operators, Conditional Expressions, Precedence and Order of Evaluation , Sequence Point(대입 연산자, 조건 표현식, 삼항 연산자, 연산의 우선순위와 연산 순서, 시퀀스 포인..

Assignment Operators 대입 연산자 i = i + 2는 i += 2와 같다. 이렇게 하나의 연산자로 표현하는 것은 +뿐만이 아니다. + - * / % > & ^ | 등의 연산자 모두 =과 결합해서 하나의 대입연산자로 표현가능하다. 즉 expr1 op= expr2는 expr1 = expr1 op expr2와같다. 대입연산자의 범위에 주의해야한다. x *= y + 1 x = x * (y + 1) // 위의 표기와 같은 의미이다. x = x * y + 1 // 이것이 아니다. assignment operator는 코드를 간결하게하고 이해하기 쉽게 만들어준다. while((c = getchar()) != EOF)와 같은 표현을 기억할 것이다. 조건문 안에 들어있는 assignment operato..

반응형