본문 바로가기

dev_AI_framework

비용 함수 계산 그래프 부분 문제 해결

각 모델의 출력 유닛의 개수에 따라 비용 함수의 계산 그래프 모양이 바뀜, 

 

출력 유닛들을 연결한 모양으로 출력층의 유닛 개수, n 의 개수에 따라 leaf_node_list 들이 바뀌어야 됌,

그리고 출력층까지의 계산 그래프 모양과의 연결은, 비용 함수의 y_pred 의 값과 연결로 leaf_node_list 엔 y_target 값이 포함되어선 안됨,

 

# ✅ MSE 계산 그래프
def build_mse_node(num_outputs):
    """
    MSE = mean( sum( (y_true_i - y_pred_i)^2 ) )

    🔹 계산 그래프 구조 (num_outputs = 3 예시)
            [mean]
              │
            [sum]
           /  |  \
      [square][square][square]
           │      │       │
       [subtract][subtract][subtract]
         /   \     /   \     /   \
     [const][const] ...
     (y_true  y_pred)
    """
    square_nodes = []

    for _ in range(num_outputs):
        y_true_node = Node("const")
        y_pred_node = Node("const")

        sub_node = Node("subtract")
        sub_node.add_child(y_true_node)
        sub_node.add_child(y_pred_node)

        square_node = Node("square")
        square_node.add_child(sub_node)

        square_nodes.append(square_node)

    sum_node = Node("sum")
    for node in square_nodes:
        sum_node.add_child(node)

    mean_node = Node("mean")
    mean_node.add_child(sum_node)

    leaf_nodes = [sq.children[0].children[1] for sq in square_nodes]

    return mean_node, leaf_nodes

각 비용 함수의 정해진 형태에 따라, 그 모양이나 형태의 일반화, leaf_node 들의 지정을 수행,