안드로이드 스튜디오를 하면서 쓰는 단축키


cmd + / : 한줄 주석

cmd + B : 해당 단어가 선언되어 있는 곳으로 감. (setContentView의 xml에 포커싱을 주고 누르면 해당 레이아웃 파일로 가게 됨)

cmd + f12 : 파일 구조 보기

cmd + y : 정의된 부분 빠르게 보기(잘 모르는 메소드에 사용하면 어떻게 선언되어있는지 알 수 있음.)

cmd + d : 선택 블록을 복사하거나 해당 라인을 복사해준다.

cmd + p : 해당 메소드의 사용을 위해 필요한 파라미터를 표시해줌.

alt + cmd + / : 블록 주석

alt + cmd + L : 라인정리

ctrl + O : Override methods

ctrl + I : Implement methods

ctrl + space : 기본 단어 자동 완성 ( 맥의 단축키랑 중복되어서 변경함 )

shift + F6 : 이름 변경하기 ( 변수명 등 )

shift + cmd + 위 또는 아래 : 해당 메서드 안에서의 라인 이동

ctrl + shift + space : 타입 캐스팅( ex) Button button = (까지 입력하고 누르면 (Button)생성해줌)

f3 : 북마크 (숫자나 문자로 북마크 = alt + f3, ctrl + 숫자 or 문자로 이동)




'# 기타 공부한 것들 > Android' 카테고리의 다른 글

Nevigation View 만들기  (0) 2018.07.26
Toobar, appbar 경계선 없애기  (0) 2018.07.25
Fragment(프래그먼트) 만들기  (0) 2018.07.15
Android Project Review with BP(2)  (0) 2018.06.18
Android Project Review with BP(1)  (0) 2018.06.16

그림 및 예제들은 KMOOC 수업자료에서 가져왔습니다.


local minima, local minimum, global minima, global maximum



Satationary Point

단변수 함수 f(x)에서의 점 x0의 미분값이 0이라면 그 점을 stationary point, 정상점이라 정의합니다.

정상점이 주어졌을 때,

1. 2차 미분값이 양의 값을 가지면 국부 최소해가 됩니다.

2. 2차 미분값이 음의 값을 가지면 국부 최대해가 됩니다.

3. Hessian 행렬이 positive definite(convex)일 경우, 국소 최솟값이 됩니다.

4. Hessian 행렬이 negative definite(concave)일 경우, 국소 최댓값이 됩니다.

그림을 보면 Local minimum과 Local maximum을 정상점 및 2차미분값을 통해 알 수 있습니다. 

하지만 가운데 점은 최솟값인지 최댓값인지 구분하기가 어렵습니다. 

이를 안정점(saddle point)라고 부릅니다.

안정점이란, convex도 concave도 아닌 정상점을 뜻합니다.

여기서 알 수 있는 것은, 어떤 정상점에서 2차미분값이 0이거나 Hessian행렬이 영행렬일 경우에는 안장점 일수도 있고, 아닐 수도 있습니다.

(예시 확인)


binding & active

어떤 제약식이 있습니다. 그 제약식에 x0를 넣었더니 등식이 만족한다.(좌/우변이 같다)

이를 x0의 입장에서 제약식을 속박(binding)한다라고 표현합니다.

또한, 제약식의 입장에서는 x0의 지점에서 active(활성화) 또는 속박적이 된다고 표현하게 됩니다.


잠시! 우리가 convex와 concave를 따져가며 문제를 푸는 이유는 여러 가지가 있지만!

일반적으로 비선형 계획법은 두 가지 이유때문에 해를 구하기가 쉽지 않습니다.

1. convex, concave가 아닐경우

2. 실현가능한 해집합이 볼록집합이 아닐경우

하지만 위의 두 이유는 식의 특성만 잘 찾는다면 바로 풀리는 문제들입니다. 당연히 수학을 조금만 알아도 왜 우리가 convex와 concave가 

좋은지를 알 수 있습니다.


Lagrangian Function (Simple)

라그랑지안 승수법을 간단히만 설명하고 넘어가겠습니다. 다음 사진을 보시면 쉽게 이해가 가실 것입니다.

말 그대로 패널티를 주고싶다는 것입니다. 사실 panalty term의 b-g(x)는 제약식에 해당합니다.

하지만 우리가 가진 목적식이 이 제약식을 만족할 수 없다는 것이죠. 하지만 문제는 풀어야하고....

그 방법으로 제약식을 목적식으로 옮겨주는 것입니다. 

즉 제약선형계획법을 비제약선형계획법으로 변형하겠다는 것이지요.

목적식으로 옮겨서 제약을 없애는 대신에 패널티 값을 주게 됩니다. 

위의 예시는 최대화 문제이며 b-g(x)가 음의 값을 가지므로

패널티 변수인 람다가 0보다 크거나 같은 숫자를 가지게 되겟죠?

이때, 람다를 '라그랑지안 승수' 라고 부릅니다. 

라그랑지안 승수는 식변형에도 많이 사용하게 됩니다 ^^


KKT 조건(Karush-Kuhn-Tucker Conditions)

KKT에 대해서도 간단히 알아보고 넘어가도록 하겠습니다!


x0의 점이 KKT조건을 만족한다면

1. x0에 대한 라그랑지안 함수의 Gradient가 0이어야 합니다.

2. x0에서 라그랑지안 승수가 0이거나 제약식 b-g(x)가 0이어야 합니다. (쌍대이론에서의 상보여유정리와 비슷함)

3, 4. 실행 조건

그렇다면 KKT는 비선형계획법에서 어떤 의미를 가질까요??

어떠한 점 x0에서 KKT조건을 만족한다는 것은 x0이 최적해가 되기 위한 필수조건을 만족하였다는 의미입니다.

따라서, x0이 최적해가 되고싶다면 KKT조건을 전부 성립시켜야 한다는 말이죠.

그래서 KKT조건을 최적해의 필요조건이라고 합니다.

그 이유는 최적해가 아니지만 KKT를 만족하는 해가 있을수도 있기 떄문입니다. (필요충분조건이 안되는 이유)

하지만 convex거나 concave임이 이미 증명이 된 경우, 필요충분조건이 됩니다. 

어떤 x0의 지점에서 해를 찾았을 때, 여러분은 이미 그 해가 최소 local min 혹은 local max라는 것을 알기 떄문입니다. 

따라서 이때의 KKT조건은 여러분이 찾은 어떤 해의 최적성을 보장하는 충분조건이 되게 됩니다. (당연히 필수도 되겟죠?)




Reference


KMOOC


'# 기타 공부한 것들 > math' 카테고리의 다른 글

Measure theory  (1) 2018.07.26
Set theory  (0) 2018.07.26
Convexity(2)  (3) 2018.06.20
Convexity(1)  (4) 2018.06.20
Duality Thorey  (0) 2018.06.19

지난 글에서는 convex의 성질에 대해서 간단히 살펴보았습니다. 

또 마지막에 convex의 특징에 대해서 설명드렸습니다. 하지만 일일히 convex의 특징을 찾기엔 비용적으로 어려운 부분이 있으니

Hessian이라는 매트릭스를 이용하여 convex인지 아닌지를 더욱 쉽게 판별할 수 있다고 말씀드리면서 마쳤습니다.

그 방법을 알기전에 convex와 concave를 구분짓는 방법부터 살펴보겠습니다.

(기타 예제 및 그림은 KMOOC의 수업자료를 참조하였습니다.)


Convex , Concave?



미분에 대한 이해가 필요합니다. 자세한 설명은 거의 생략하였습니다.

위의 그림은 Hessian matrix, 2차편미분행렬입니다. 이 행렬은 미분을 통해 함수의 방향성을 나타낼 수 있다고 말할 수 있습니다. 

예를 들면 다음 그림과 같습니다.



오른쪽에 보이는 것은 아시는 것과 같이 등고선입니다. 또 여러분은 Gradient가 함수의 이동방향이라고 이해하실 수 있습니다. 

그렇다면 이 함수가 가지는 값이 결국 방향을 나타낼 수 있다고 말할 수 있다는 것입니다. 

이러한 방향성을 담고 있는 것이 Hessian matrix라고 이해하시면 쉽습니다.

먼저 용어부터 알고 가시겠습니다. 다변수 함수 f(x)를 가질 때,

f(x) is strictly convex over X

-> if its Hessian matrix is positive definite for any x in X

f(x) is convex over X

-> if its Hessian matrix is positive semi-definite for any x in X

f(x) is strictly concave over X

-> if its Hessian matrix is negative definite for any x in X

f(x) is concave over X

-> if its Hessian matrix is negative semi-definite for any x in X


구분은 다음 식의 조건에 따라 달라집니다.


이 식이 (h(x)라고 두겟습니다)

1. if h(x)>0, positive definite

2. if h(x) >= 0, positive semi-definite

3. if h(x) <0, negative definite

4. if h(x) <= 0, negative semi-definite 

를 만족하게끔 할 것입니다. 

(단일 변수의 경우, α 의 조건으로 결정하게 됩니다. H를 α 로 보시면 됩니다 ^.^)

다변수에서는 예를 들어보도록 하겠습니다. y = [y1, y2]라고 두었을 때,

첫번째 식과 두번째 식은 대입해보면 convex라는 사실을 알 수 있습니다. 하지만 3번쨰는 그렇지 않습니다.

convex와 concave를 결정할 때, 위의 방법과 같이 결정하게 됩니다. 하지만 이 방법은 문제가 있습니다.

일일히 수를 생각해줘야 하므로 비용이 많이 든다는 점입니다. 즉, 모든 y에 대해 전부 검사하기는 상당히 어려운 일입니다.

따라서 우리는 k-th principle minor 방법을 생각해 볼 수 있습니다. 


Principal Minor

정의는 이렇습니다.

요약하자면 k번째 소 주행렬이란, 매트릭스 H에서 (n-k)만큼의 행과 열을 제거하고 남는 수의 결정자라고 하네요.

예를 보겠습니다.

소 주행렬(principal minor)을 구하는 것은, (n-k)개의 행과 열을 삭제하는 것에서부터 시작됩니다. 

>> matrix H에서 대각행렬은 1st principal minor이 됩니다. (이 때 k 는 2)

>> 행렬 [[1,3], [7,9]](2X2 행렬) 는 2nd principal minor중 하나가 될 것입니다. (k = 1)

>> 전체 행렬은 3번째 소 주행렬이 됩니다.

다음은 선도 주행렬(leading principal minor)에 대해 살펴보겠습니다.

matrix H 가 n by n 이라는 것을 감안하면, 다음 그림과 같이 n개의 선도 주행렬을 가지게 됩니다.


바로 예를 보겠습니다.

행렬 

    에서 

>> Leading principal minors  : D1 = a, D2 = ac - b^2 (여기서 D는 determinant)

>> Principal minors               :   dev1 = a, dev1 = d, dev2 = ac-b^2

(여기서 선도 행렬과 소 주행렬의 차이를 볼 수 있습니다. 선도는 a만 고려하지만 소 주행렬은 a와 c 둘 다 고려하게 됩니다.)

이 됩니다. 거의 마지막에 다왔습니다. 


선도 및 소 주행렬식을 구하면 다음과 같은 조건으로 convex와 concave를 구별하게 됩니다.

(여기서 k는 위의 k와 같은 의미를 가집니다)

• 𝑯 is positive definite if and only if 𝐷 > 0 for all leading principal minors (선도 주행렬 판단)

 𝑯 is positive semi-definite if and only if 𝛥𝑘 ≥ 0 for all principal minors (소 주행렬 판단)

 𝑯 is negative definite if and only if  (−1) 𝑘𝐷 > 0 for all leading principal minors (선도 주행렬 판단)

 𝑯 is negative semi-definite if and only if (−1) 𝑘𝛥𝑘 ≥ 0 for all principal minors (소 주행렬 판단)

바로 예제를 살펴보고 글을 마치도록 하겠습니다. 

(다른 예제는 KMOOC의 수업자료를 참고하시길 바랍니다. 글 길이가 너무 길어져 올리지 않았습니다.)



이 예제에서 함수가 convex인 부분을 원한다면 선도행렬들이 양의 값이 되어야 하겠죠?? 

따라서 12x1 - 36 >=0 이 되는 x값부터가 convex한 부분이라고 할 수 있겠습니다.



이상으로 convex가 무엇인지 간단하게 살펴보았는데요. 

정말 쉽게 생각한다면 위의 선도 주행렬이니 소 주행렬이니 생각하지 마시고, 

convex하면 경사(기울기)를 이용한 문제를 풀기 쉽다. 

또한, 밥그릇 모양을 생각하시면 됩니다 :)


Reference


KMOOC

'# 기타 공부한 것들 > math' 카테고리의 다른 글

Set theory  (0) 2018.07.26
Local Minimum, Local Maximum  (0) 2018.06.21
Convexity(1)  (4) 2018.06.20
Duality Thorey  (0) 2018.06.19
RandomSampling과 hypothesis  (0) 2018.06.18

이 글은 convexity에 대해 정리한 글입니다.


함수가 convex하다. 여러분이 ML을 공부하다 보면 경사하강법을 많이 사용하시게 되는데요. 이때, 함수가 convex하다라고 표현이 가능하면 해의 최적값을 좀 더 빠르고 정확하게 찾을 수 있다는 것을 아실 것입니다.


실제로 유명한 GAN에서도 함수를 conex라고 가정하고 풀고 있죠. 하지만 실제로 convex한지는 증명되진 않았습니다.


여기서 나오는 convex에 대해 정리해보겟습니다.


Convex Set


다음과 같은 그림을 보시길 바랍니다.



집합 X에서 점과 점을 잡고 어떤 선을 그엇을 때, 그 선이 포함하는 점조차도 집합 X에 포함된다.


위의 말이 성립되면 그 집합은 convex하다 라고 표현할 수 있습니다. 


따라서, 위 그림에서는 첫번 째, 두번 째 그림만이 convex하다고 표현할 수 있겟네요.


Convex Set은 다음과 같은 성격을 가집니다.


정리하자면,' convex할 때 상수를 더하거나 곱해도 convex하고, 어떤 convex집합 X, Y가 만났을 때, 그 교집합도 convex하다' 라는 의미입니다.


좀 더 수식적으로 풀어보면 이렇습니다.




첫번째 그림은 두번째 그림으로 설명하겠습니다.


먼저, 빨간선을 할선(secant line)이라고 부릅니다.

 어떤 함수 f(x)에서 점 (x1, x2) 를 선택하여 할선을 그렷을 때, 실제 함수 f가 할선의 선분아래에 있으며, 임의로 다른 점 (x1, x2)을 선택했을 때도 선분 아래에 있다면 convex정의가 성립됩니다.


convex와 strictly convex의 차이는 등호(=)의 차이입니다. 

예를 들어, 두번 째 그림의 경우, 파란색 점 (x1, x2)를 선분으로 그린다고 생각해 봅시다. 그럴경우엔 실제 함수 f와 완벽히 일치하게 됩니다. 이때, convex의 정의인 <=는 성립하지만, <는 성립하지 않게됩니다. 완벽하게 동일하니까요. 그래서 밑 함수는 convex이지만 strictly convex는 아닙니다.



위 그림에서 Linear함수는 완벽히 convex하다고 할 수 있습니다.


다음은 convex의 몇 가지 특징입니다.



함수 -f(x)가 convex하다면 실제함수 f(x)는 concave(오목함수)하다고 표현합니다.


두번째는, 실제함수 f가 convex할 경우, αf(x) 또한 convex이며 α >= 0입니다.




1.  convex하다면 접선 위에 있어야 한다는 것입니다. 다변수의 경우 빨간색으로 표시된 변수처럼 기울기로 표시하면 되겠습니다.

2. 실제 함수 f(x)의 2차미분값이 0보다 크거나 같아야 convex하다는 것입니다. 이를 positive semi-definite라고 표현합니다.(뒤에서 설명)


어떤 Model에서 함수가 convex하다는 것을 증명하는 것은 정말 중요합니다. 그만큼 계산이 쉬워지고 해도 찾기가 상당히 쉬워집니다. 하지만 실제로 convex를 찾으려면 실험도 많이 해봐야하고, 값도 일일히 찾아봐야하는데는 비용이 너무 많이 들겁니다. 

그래서 이용하는 것이 Hessian에서 2차미분 값을 이용하는 방법이 있습니다. -> 다음 글에서 이어나가도록 하겟습니다.



감사합니다


Reference


KMOOC

'# 기타 공부한 것들 > math' 카테고리의 다른 글

Set theory  (0) 2018.07.26
Local Minimum, Local Maximum  (0) 2018.06.21
Convexity(2)  (3) 2018.06.20
Duality Thorey  (0) 2018.06.19
RandomSampling과 hypothesis  (0) 2018.06.18

이 글은 Duality Problem에 대해 간단히 정리한 글입니다.


Duality Theroy


우리는 선형계획에서 optimum(최적값)을 찾기를 원합니다. 또, 만약 최적값을 찾게 되었다면 그에 대한 검증이 필요합니다.


어떤 최적값에 대한 검증에는 하한, 상한으로 검증하게 됩니다. 이 방법이 Dual, 쌍대 문제입니다.


예를 들어서, 밑과 같은 선형문제가 있다고 생각해봅시다.






이 문제에서 각 등식에 y1, y2와 같은 변수를 곱해서 목적식과 비슷하게 만들어주면 간단히 상한을 구할 수 있습니다.(해보시길..)


쌍대 문제로 바꾸게 되면 다음 그림처럼 바뀌게 됩니다.


왜 이런 그림이 나오는지는 다음 그림으로 설명되어질 수 있습니다.


상한을 구하는게 목적인 것을 생각해보면 제약식이 왜 저런 형태를 띄고 있는지를 알 수 있으며, 목적식 또한 그 의미를 알 수 있을 것입니다.


Primal(원문제) 가 최대식이라면 Dual 은 최소로 바뀌게 됩니다. 반대로 Primal이 최소식이라면 Dual은 최대로 바뀌게됩니다.


또한, 하한을 구하기위해 몇 번의 곱셈을 하다보면 Dual의 Dual은 Primal이라는 것을 알 수 있습니다.


즉, 위의 그림과 같이 쌍대문제로 전환하여 W를 구하게 되면 원문제 Z의 상한이 된다는 의미입니다.


Duality Problems : Primal <-> Dual


쌍대 문제에서는 3가지 속성이 존재합니다.


1. 약쌍대성

- > 만약 최대화 문제일 때, 쌍대문제를 통해 값을 도출하였다면 이 값은 원문제의 최적해에 대해 상한이 됩니다.


2. 강쌍대성

-> 쌍대 문제에서의 최소 상한값이 원 문제에서의 optimum값과 같다는 정의입니다.


3. 상보여유정리



상보여유정리는 쉽게 말씀드리자면 다음과 같습니다. 만약 쌍대변수의 값 (그림에서 y1, y2, y3, y4를 의미)이 0이 아닌 경우, 원 문제의 제약식은 등식을 만족해야 합니다.


-> 그림에서 y1, y2가 0이 아닌 양수임을 볼 수 있습니다. 이 의미는 원문제에서 1, 2번째 제약식이 등식을 만족한다는 뜻입니다.(직접 x1, x2의 값을 넣어보십시오). 또한 3, 4번째는 상대변수의 값이 0이 되므로 원문제에서 3, 4번째 제약식은 등식이 성립하지 않습니다.


감사합니다.





Reference


KMOOC 


'# 기타 공부한 것들 > math' 카테고리의 다른 글

Set theory  (0) 2018.07.26
Local Minimum, Local Maximum  (0) 2018.06.21
Convexity(2)  (3) 2018.06.20
Convexity(1)  (4) 2018.06.20
RandomSampling과 hypothesis  (0) 2018.06.18