Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

그냥하는코딩

자가진단 문제 풀기 본문

부스트캠프 준비기

자가진단 문제 풀기

UKkim 2021. 5. 15. 15:51

https://blog.naver.com/boostcamp_official/222345119688

 

부스트캠프 AI Tech 2기 자가 진단 문항

부스트캠프 AI Tech 2기 자가 진단! Do you have a DNA of AI engineer? 지금, AI 엔지니어의 ...

blog.naver.com

<Part A. 기초수학>

1. 다음 중 틀린 것을 고르시오.

정답 : ② 벡터는 숫자를 원소로 가지는 리스트 또는 배열이다.

=> 벡터는 방향과 길이를 가지는 값이다. 리스트 또는 배열이라고 할 수 없다.

=> ① 한 벡터로부터의 상대적 위치 이동을 의미한다.

2. 다음 중 곱셈이 불가능한 경우는?

=> 행렬 곱은 A*B 의 경우 A의 열의 갯수와 B의 행의 갯수가 일치하여야한다.

     ex) A(n*m) 이면 B(m*k)

정답 : ③

 

3. 다음의 조건을 만족하는 행렬 C의 차원 (dimension) 은?

=> A(128*256), B(13*128)

=> C = BA => (13 * 128) x (128 * 256) => (13 * 256) 차원이 된다.

 

4. 다음을 계산한 것으로 적절한 것은?

=> 위 식은 자연상수의 정의식이다.

정답 : ① e

 

<Part B. 기초 프로그래밍>

5. 다음 코드에서 time_complexity 함수의 파라미터 N에 대한 시간복잡도는 무엇일까요?

def time_complexity(N = int()):
    for i in range(300):
        for num in range(n):
            for index in range(n):
                print(index)

=> for 문 순서대로 300 x N x N 이 되어 O(300N^2) 가 된다.

정답 : ④

=> ② Big O 표기법의 경우 매우 커질시 상수는 무시할 수 있으므로 O(N^2)가 정답

 

6. 다음 코드의 출력 값으로 올바른 것은 무엇인가요?

def counting(num = int()):
    cnt = 0
    while True:
        if (num % 5) == 0:
            cnt = cnt + (num / 5)
            break
        num = num - 3
        cnt += 1
        if num <= 0:
            break
    return cnt
    
answer = counting(21)
print(answer)

=> counting(21)

=> num = 21 - 3 = 18 // cnt = 1

=> num = 18 - 3 = 15 // cnt = 2

=> num % 5 == 0

=> cnt = 2 + (15 / 5) = 2 + 3 = 5

정답 : ②

 

7. 다음 코드를 실행 했을 경우 나오는 오류의 종류는?

def input_string(num = int()):
    num = num + 1
    return num
print(input_string(str(49324)))

=> 위 정의된 함수 input_string 은 매개변수 int형 자료 num 을 받는다. 하단의 print(input_string(str(49324))) 에서 str(49324) String 자료형을 변수로 보내 TypeError 라 발생할 것이다.

정답 : ④

 

<Part C. 기계 학습>

8. 학습 데이터셋의 총 샘플 수가 25,000개이고 1epoch를 돌기 위한 총 learning step의 수가 500이 되기 위한 batch size는?

=> 용어를 잘 모르겠다. 직관적으로 볼 때 25,000개의 데이터를 500번에 학습시키려면 한번당 몇 size가 되어야하는가로 보여서 25,000 = 500 x 50

=> Learning step은 하나의 batch를 모델의 입력 데이터로 넣어서 모델 매개변수를 한 번 업데이트 하는 것을 말한다.

따라서 500번의 learning step 동안에 총 샘플 수를 학습하기 위해서는 25000/500 으로 batch size를 설정.

=> total sample = learning step x batch size

 

9. 다음중 손실 함수에서 극소값의 위치를 구하기 위해 사용하는 방법을 고르시오.

① 오일러급수 ② 경사하강법 ③ 경사상승법 ④ SVM

=> 용어를 잘 모르겠다. 극소값을 구하는 것이므로 아래로 수렴하는 느낌의 경사 하강법이 아닐까 싶다.

=> 경사 하강법(Gradient Descent)은 Cost함수(손실함수) 에서 극소값을 구하기 위해 사용하는 방법이다.

 

10. 아래 그래프를 나타내는 활성화 함수는?

① ReLU ② Maxout ③ Dropout ④ Sigmoid

 

=> 용어를 잘 모르겠다.

=> 위 그래프는 Sigmoid 함수의 그래프이다 각 그래프 모양은 아래를 참고하자

=> dropout은 데이터 학습시에 임의의 뉴런을 제외하고 학습시키는 기법이다.

 

문제를 풀어보니 수학과 프로그래밍은 기본적인 부분에 대한 복습하면 될 것같고 기계학습 학문의 용어나 개념을 이해하는 것이 시급하다고 생각된다. 기계학습 부분은 학습 후 다시 풀어보도록 하자.

 

2021/05/26

학습한 내용을 바탕으로 문제를 다시 풀고, 해설을 보며 복습하는 시간을 가질 수 있었다.

벡터나 Big O 표기법의 경우 구하는 방법은 알고 있었지만, 명확하게 알지 못했던 것 같다. 수학과 알고리즘 부분에 대한 정리 복습도 필요할 것으로 보인다.

https://blog.naver.com/boostcamp_official/222366350433

 

자가 진단 테스트 문제를 해설해드립니다!

부스트캠프 AI Tech 2기에 지원하기 전 스스로의 문제 해결 능력을 판단할 수 있도록 준비한 자가 진단 ...

blog.naver.com

 

Comments